AWS Step Function 中的指数等待时间

问题描述

目前,AWS 中的等待状态只能等待定义的设定时间。

假设我的 step 函数使用 API 检查状态,如果状态更新,它将继续前进,否则它将再次等待一段时间!

我想让这个等待期动态化

即(退避率设置为2)

第一次重试:等待 3600 秒

第二次重试:等待 7200s (3600x2)

第三次重试:等待 14400s (7200x2)

等等。

有没有什么办法可以在不使用任何其他外部计算资源(例如 lambda)的情况下做到这一点

解决方法

我无法为此找到内置工具 所以 我在库中创建了一个自定义逻辑

图书馆有两部分

  • 包含 lambda/计算服务的 CDK 模板
  • 包含 exp 等待逻辑代码的服务代码

我用来解决这个问题的方法是 当请求进入 step 函数时,我会附加一个带有等待时间参数的对象

lambda 使用这些参数来计算动态等待时间并使用新的等待时间值更新 json 路径