AWS Step Functions 中的清理逻辑

问题描述

我在 Step Functions 状态机中使用 LambdaA 处理故障并进行清理,例如更新 DDB 中的作业状态。

但 Step Functions 执行本身也可能失败,例如它可能会违反整体超时或步骤之间的崩溃。因此,我需要将错误处理 LambdaB 添加到 Step Functions CloudWatch 事件并进行类似的清理。

现在我在考虑是否可以删除 LambdaA 并简单地转发到失败状态,这应该会触发 CloudWatch 事件并且所有清理工作都将依赖于 LambdaB。

这是一个好的设计吗?是否有关于 Step Functions 的清理逻辑设计的最佳实践?

谢谢

解决方法

根据我的观察,将复杂的任务分解成小任务并组合不同的 AWS 服务是合理的。

此外,您可以尝试使用带有 Retry 属性的 Step Function Error Handling。

"Retry": [ {
   "ErrorEquals": [ "States.Timeout" ],"IntervalSeconds": 3,"MaxAttempts": 2,"BackoffRate": 1.5
} ]

参考:https://docs.aws.amazon.com/step-functions/latest/dg/concepts-error-handling.html

但是,您必须将一个逻辑添加到您的 LambdaA 中,如果它是 Retry,它将被清理。如果没有,它只会向前移动。