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

时间:2019-02-23 12:36:01

标签: aws-lambda aws-step-functions

我正在创建一个AWS步骤函数,其中一个步骤(称为步骤X)启动可变数量的lambda。由于这些lambda函数很长(每个函数需要1到10分钟才能完成),因此我不想在步骤X中等待它们。我会花钱等待。因此,我以 { test: /.(png|jpg|gif|woff|woff2|eot|ttf|svg)(\?[\=\.a-z0-9]+)?$/, loader: "url-loader" }, 开始它们,以便它们都异步并行运行。

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

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

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

3 个答案:

答案 0 :(得分:1)

异步调用的Lambda是一个“即弃即用”的用例。没有直接的方法来获得结果。恐怕您将不得不编写自己的作业同步逻辑。

答案 1 :(得分:0)

您可以提供回调,以使lambda异步回发,而不是进行轮询(这又很昂贵)。一旦获得所有lambda的所有正数,然后继续该过程。

答案 2 :(得分:0)

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