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

What happens when I stop an execution in AWS Step Functions?

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

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

我想知道它的作用。是的,当然,它会停止执行,但是如果某个任务是 运行 怎么办?它会像 SWF 一样发送信号停止任务吗?或者只是撤销 TaskToken(这样任务就无法将结果发回)并保留它 运行?如果任务是 lambda 函数,是否也会发生同样的情况?

我一直在考虑这个问题,因为我有一些很长的 运行 任务,但在任何地方都找不到这种行为的记录。

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

我进行了测试,结果证明 SFN 完全无法停止 运行 任务。但是,如果您尝试在停止执行时发送 TaskHeartbeat,它将引发 TaskTimedOut 错误。

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

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

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