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

Get status of asynchronous (InvocationType=Event) AWS lambda execution

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

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

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

如果不可能,我需要我的 lambda 将它们的状态保存在某处,以便我可以轮询此状态。我想避免这种策略,因为它不涵盖在我的 lambda 之外发生的问题(例如:内存不足、节流异常等)

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

您可以提供回调,而不是轮询(这又很昂贵),以便 lambda 异步返回 post。一旦你得到所有 lambda 的所有肯定,然后继续这个过程。

自最初发布问题以来,AWS 添加了对 dynamic parallelism in workflows 的支持。因此,现在需要手动启动 lambda 函数并轮询它们是否完成,这是一种反模式。