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

问题描述 投票:0回答:3

我正在阅读 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
3个回答
11
投票

我做了测试,结果发现 SFN 绝对不会停止正在运行的任务。但是,如果您尝试在停止执行时发送 TaskHeartbeat,它将引发 TaskTimedOut 错误。

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

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


4
投票

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


0
投票

接受的答案可以追溯到很久以前,但我刚刚发现 AWS 现在也停止了底层任务:

Task stopped at: 2024-04-24T01:23:32.972Z

The Task state in AWS Step Functions execution [execution arn ] which was managing this resource was aborted

因此您应该能够在用户界面中单击“停止执行”,这应该会自动停止任务。

希望这对未来的读者有所帮助👍

© www.soinside.com 2019 - 2024. All rights reserved.