12

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

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

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

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

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

4

2 回答 2

9

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

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

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

于 2017-08-16T16:48:19.073 回答
3

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

于 2019-06-27T23:19:28.937 回答