如何使用 TaskToken 两次回调同一个步骤函数?

gre*_*ter 5 callback amazon-web-services aws-lambda aws-step-functions

我使用带有 lambda 的步骤函数来使用 $$.Task.Token 和 SendTaskSuccess 进行回调。

第一次回调时一切正常。但如果我需要进行第二次回调,我会得到TaskTimedOut: Task Timed Out: 'Provided task does not exist anymore'.

我不确定是否应该保留 $$.Task.Token 中的第一个任务令牌或为每个回调生成一个新的任务令牌。但这似乎并不重要,因为我已经尝试过两者都做,并且无论哪种方式都得到相同的结果。

这不应该是可能的吗?有什么特别的事我必须做吗?

gre*_*ter 7

文档中任何地方都没有明确说明的重要信息(我能够找到)是 TaskToken 只能使用一次。之后,如果您尝试再次使用它,您将收到 TaskTimedOut 错误。

为了进行第二次回调,我必须在我的步骤函数和 lambda 中实现“重新配置”功能。第一个回调完成后,我的步骤函数中有一个重新准备步骤,它会进行另一个调用,向 lambdaarn:aws:states:::lambda:invoke.waitForTaskToken传递一个新参数。$$.Task.Tokenlambda 可以在稍后的某个时间使用该 TaskToken 通过 SendTaskSuccess 进行回调。

只要遵循此重新准备过程,就可以进行任意数量的回调。