Aws 步进函数 - 从失败的步进函数活动中恢复,而不是开始新的执行

Posted

技术标签:

【中文标题】Aws 步进函数 - 从失败的步进函数活动中恢复,而不是开始新的执行【英文标题】:Aws step functions - Resume from failed step function activity instead of starting a new execution 【发布时间】:2021-12-23 22:36:07 【问题描述】:

我创建了一个包含 4 个不同活动的步进函数,这些活动一个接一个地运行,并且还集成以从 Java 应用程序触发此步进函数。流程看起来像这样。

开始 -> Activity1 -> Activity2 -> Activity3 -> Activity4 -> 停止

当某个活动(比如 Activity2)执行失败时,该执行被标记为失败。

现在,是否有办法从之前失败的 Activity(Activity2) 恢复失败的执行,而不是开始新的执行?

我完成了可以通过AWSStepFunctions 进行的操作,但似乎没有一个可以解决这个要求。 https://docs.aws.amazon.com/step-functions/latest/apireference/API_Operations.html

【问题讨论】:

【参考方案1】:

使用 AWS Step Functions 进行错误处理的公共文档包含有关 fallback states 的部分。这允许您指定处理任务失败的逻辑,并根据观察到的错误进入另一个状态。

以下 Catch 字段根据从相关任务状态观察到的错误重定向执行流程:

"Catch": [ 
   "ErrorEquals": [ "java.lang.Exception" ],
   "ResultPath": "$.error-info",
   "Next": "RecoveryState"
, 
   "ErrorEquals": [ "States.ALL" ],
   "Next": "EndState"
 ]

【讨论】:

我不是在寻找替代方案或错误处理。如果 Activity2 使用的服务方法引发了一些运行时错误并且完整执行失败,我想修复服务方法的问题并从 Activity2 重新运行执行以避免再次运行 Activity1。【参考方案2】:

我试图实现同样的目标,发现此链接很有帮助。 https://aws.amazon.com/blogs/compute/resume-aws-step-functions-from-any-state/

【讨论】:

以上是关于Aws 步进函数 - 从失败的步进函数活动中恢复,而不是开始新的执行的主要内容,如果未能解决你的问题,请参考以下文章

AWS Step Functions:如何访问在 catch 块中生成异常的状态的输入?

三菱plc中对于步进指令是当第一个状态到第二个状态的时候第一个状态自动复位吗

步进电机库函数

在颤动中将地图列表转换为步进器?

Marlin固件的步进电机控制代码解析

在事务中更新到 Redshift