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

问题描述

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

在第一个回调上一切正常。但是,如果我需要执行第二次回调,则会得到TasktimedOut: Task Timed Out: 'Provided task does not exist anymore'

我不确定是否应该保留$$。Task.Token中的第一个tasktoken或为每个回调生成一个新的令牌。但这似乎无关紧要,因为我尝试了两种方法都可以得到相同的结果。

这不可能吗?我有什么特别的事吗?

解决方法

您是否能够提供有关您要执行的操作的其他信息以及大致的状态机定义?希望我们能够为您提供帮助!

乔丹

,

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

为了进行第二次回调,我必须在step函数和lambda中实现“ rearming”功能。第一个回调完成后,我将在step函数中进行重新组装,该步骤将再次进行arn:aws:states:::lambda:invoke.waitForTaskToken调用,并将新的$$.Task.Token参数传递给lambda。 Lambda可以在以后的某个时间使用TaskToken来通过SendTaskSuccess进行回调。

只要遵循此重新配置过程,就可以进行任何数量的回调。