当我在AWS Step Functions中停止执行时会发生什么?

时间:2017-08-09 16:38:34

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

我正在阅读API文档,其中包含一项名为StopExecution的操作。

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

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

我正在考虑这个因为我有一些长时间运行的任务,并且无法在任何地方找到这种行为。

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

2 个答案:

答案 0 :(得分:3)

我做了测试,结果证明SFN绝对没有任何东西可以阻止正在运行的任务。但是,如果在停止执行时尝试SendTaskHeartbeat,则会抛出TaskTimedOut错误。

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

注意:SendTaskSuccess / SendTaskFailure上发生了相同的TaskTimedOut错误。

答案 1 :(得分:0)

在批处理作业的情况下,它确实停止了该步骤,并且使用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