【问题标题】:Cleanup logic in AWS Step FunctionsAWS Step Functions 中的清理逻辑
【发布时间】:2021-05-27 14:25:15
【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-serverless aws-step-functions


    【解决方案1】:

    从我的观察来看,将复杂的任务解耦成小任务并结合不同的 AWS 服务是合理的。

    另外,您可以尝试使用带有Retry 属性的 Step Function 错误处理。

    "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,它将被清理。如果没有,它只是向前移动。

    【讨论】:

    • 感谢您的回答。我可以重试,但我主要担心的是,我们无法在状态机中捕获整个执行错误,因此 LambdaA 只是捕获其他步骤的错误,但我仍然需要一个 LambdaB 来捕获整个执行中的错误.那我为什么不把它们合二为一,只依赖LambdaB呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 2018-08-28
    • 2020-01-29
    • 1970-01-01
    • 2022-12-21
    • 2022-11-08
    相关资源
    最近更新 更多