我正在阅读API文档,其中包含一项名为StopExecution的操作。
https://docs.aws.amazon.com/step-functions/latest/apireference/API_StopExecution.html
我想知道它做了什么。是的,当然,它会停止执行,但如果某个任务正在运行怎么办?是否发送信号以像SWF那样停止任务?或者只是撤销TaskToken(因此任务无法发回结果)并让它继续运行?如果任务是lambda函数,会发生同样的情况吗?
我正在考虑这个因为我有一些长时间运行的任务,并且无法在任何地方找到这种行为。
我的猜测:它只是表示执行已停止并让任务继续运行。当任务调用SendTaskSuccess时,它只会收到类似InvalidToken的错误。
答案 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