【问题标题】:What happens when I stop an execution in AWS Step Functions?当我在 AWS Step Functions 中停止执行时会发生什么?
【发布时间】:2019-06-28 07:19:28
【问题描述】:

我正在阅读 API 文档,其中有一个名为 StopExecution 的操作。

https://docs.aws.amazon.com/step-functions/latest/apireference/API_StopExecution.html

我想知道它的作用。是的,当然,它会停止执行,但是如果某个任务正在运行呢?它会像 SWF 那样发送信号来停止任务吗?或者只是撤销TaskToken(因此任务无法将结果发回)并让它继续运行?如果任务是 lambda 函数,也会发生同样的情况吗?

我正在考虑这个问题,因为我有一些长时间运行的任务,并且在任何地方都找不到此行为的记录。

我的猜测:它只是表示执行已停止并让任务继续运行。当任务调用 SendTaskSuccess 时,它只会收到类似 InvalidToken 的错误。

【问题讨论】:

  • 我也想知道这个问题的答案。如果您发现答案,请更新。谢谢。

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


【解决方案1】:

我进行了测试,结果发现 SFN 完全没有阻止正在运行的任务。但是,如果您尝试在停止执行时发送任务心跳,则会引发 TaskTimedOut 错误。

我最终做的是验证 SendTaskHeartbeat 的输出,捕获 TaskTimedOut 并继续在工作端取消任务。

注意:SendTaskSuccess/SendTaskFailure 也会发生同样的 TaskTimedOut 错误。

【讨论】:

【解决方案2】:

在批处理作业的情况下,它确实会停止步骤并使用 exitCode 1 终止作业,原因如下: Status reason: The Task state in AWS Step Functions execution [arn:aws:states:us-west-2:12345678912:execution:JobStateMachine:00000-c583-2050-f8b1-9d36e05f4266] which was managing this resource was aborted

【讨论】:

  • 对此有一点需要注意的是,您必须针对状态机同时授予batch:SubmitJobbatch:TerminateJob。不过,我不知道如何将其限制为某些队列。
猜你喜欢
  • 1970-01-01
  • 2019-12-25
  • 2018-07-20
  • 1970-01-01
  • 2012-06-24
  • 2018-11-16
  • 1970-01-01
  • 1970-01-01
  • 2019-04-24
相关资源
最近更新 更多