Aws lambda 获取异步(InvocationType=Event)AWS lambda执行的状态

Aws lambda 获取异步(InvocationType=Event)AWS lambda执行的状态,aws-lambda,aws-step-functions,Aws Lambda,Aws Step Functions,我正在创建一个AWS步骤函数,其中一个步骤,我们称之为步骤X,启动一个可变数量的lambda。由于这些lambda函数很长,每个函数需要1到10分钟才能完成,所以我不想在步骤X中等待它们。我会花钱只是为了等待。因此,我用InvocationType=Event启动它们,以便它们都异步并行运行 一旦完成步骤X,启动所有这些lambda,我希望我的step函数等待所有这些异步函数完成。所以,有点像前面描述的,我会在我的step函数中创建某种while循环。此循环将等待所有异步调用完成 所以问题是:是

我正在创建一个AWS步骤函数,其中一个步骤,我们称之为步骤X,启动一个可变数量的lambda。由于这些lambda函数很长,每个函数需要1到10分钟才能完成,所以我不想在步骤X中等待它们。我会花钱只是为了等待。因此,我用InvocationType=Event启动它们,以便它们都异步并行运行

一旦完成步骤X,启动所有这些lambda,我希望我的step函数等待所有这些异步函数完成。所以,有点像前面描述的,我会在我的step函数中创建某种while循环。此循环将等待所有异步调用完成

所以问题是:是否可以查询以InvocationType=Event启动的AWS lambda的状态


如果不可能,我需要我的lambda将它们的状态保存到某个地方,以便我可以轮询此状态。我希望避免使用此策略,因为它不包括在lambda ex之外发生的问题:内存不足、限制异常等。

异步调用的lambda是一个fire-and-forget用例。没有直接的方法可以得到它的结果。恐怕您必须编写自己的作业同步逻辑。

您可以提供回调,让lambda异步发回,而不是轮询(同样昂贵)。一旦您获得所有lambda的所有正面信息,然后继续此过程。

由于问题最初已发布,AWS添加了对的支持。因此,需要手动启动lambda函数,并在step函数中轮询它们的完成情况,这是一种反模式。

如何做到这一点?我的用例很简单,启动lambda,等待,如果成功则退出,如果失败则向SNS主题发送消息。您现在可以使用lambda destinations执行此操作:我的用例很简单,启动lambda,等待,如果成功则退出,如果失败则向SNS主题发送消息。