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

drp*_*exe 6 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的错误。

drp*_*exe 7

我做了测试,结果证明 SFN 完全没有阻止正在运行的任务。但是,如果您尝试在停止执行时使用 SendTaskHeartbeat,它将引发 TaskTimedOut 错误。

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

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