【问题标题】:Get status of asynchronous (InvocationType=Event) AWS lambda execution获取异步 (InvocationType=Event) AWS lambda 执行的状态
【发布时间】:2019-02-23 12:36:00
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: aws-lambda aws-step-functions


    【解决方案1】:

    异步调用的 Lambda 是“一劳永逸”的用例。没有直接的方法可以得到它的结果。恐怕您必须编写自己的作业同步逻辑。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 怎么做?我的用例很简单,启动一个 lambda,等待,如果成功则退出,如果失败则向 SNS 主题发送消息。
      • 您现在可以使用 lambda 目的地做到这一点:aws.amazon.com/en/blogs/compute/…
      【解决方案3】:

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

      【讨论】:

      • 我的用例很简单,启动一个 lambda,等待,如果成功则退出,如果失败则向 SNS 主题发送消息。
      猜你喜欢
      • 2016-05-01
      • 2019-01-28
      • 2021-04-02
      • 2019-04-04
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 2016-10-30
      相关资源
      最近更新 更多