【问题标题】:Behaviour of AWS Lambda triggered by schedule function 'rate' with concurrency > 1AWS Lambda 的行为由并发 > 1 的调度函数“rate”触发
【发布时间】:2021-09-28 14:20:00
【问题描述】:

我需要创建一个处理 DynamoDB 表中记录的 lambda,这将由调度函数 rate (1 minutes) 触发。这个 lambda 取决于它需要处理的数据量,可能需要 1 秒到 5 分钟之间的任何时间。

我的理解是,如果我将并发设置为1:

  • lambda 将尝试每分钟触发一次
  • 如果前一个 lambda 实例尚未完成(运行时间超过 1 分钟),它将取消尝试,因为实例已在运行,并会在一分钟后重试

我的问题是如果我将并发设置 > 1 会发生什么,例如 2:

  • 每分钟会触发 2 个 lambda 吗?
  • 或者它会每分钟触发 1 个 lambda,但是
    • lambda@minute0 已创建,需要 3 分钟
    • lambda@minute1 也已创建,需要 2 分钟
    • 不会创建 lambda@minute2,因为我们已经有 2 个实例

如果在此之前没有答案,我会在完成测试后尝试回答我自己的问题。

【问题讨论】:

  • 进展如何?您的测试是否显示了一些不同的行为?
  • 嗨,Marcin,该服务需要一些时间来开发,我将在接下来的几周内进行测试。感谢您的入住!

标签: amazon-web-services aws-lambda concurrency aws-serverless


【解决方案1】:

这将是如您所描述的,除了“每分钟会触发 2 个 lambda 吗?”。如果有“免费”并发可供消费,则只能有两个。因此,如果您已经有两个函数运行了几分钟,则没有“空闲”并发来启动第三个函数。

【讨论】:

  • 好的,所以在第 0 分钟,将创建 lambda1 和 lambda2,如果两者都需要 90 秒,则在第 1 分钟不会发生任何事情,在第 2 分钟,将再次创建 2 个 lambda。你从经验中知道吗?我在 AWS 文档中找不到这个问题的答案(并为此向他们发送了反馈)。
  • @JulianHonma 不会完全如此,因为 CloudWatch 规则的准确性是 1 分钟。因此 CW 事件不会每分钟精确触发。并发的目的是限制函数的并发执行。我没有链接到它如何与 CW 事件完全配合,但我认为这并不重要。 2 的并发性仍然适用。只需按计划运行测试即可。您可以检查函数的 CW 调用指标以验证行为。
猜你喜欢
  • 2016-10-19
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
  • 1970-01-01
  • 2018-03-05
  • 2021-03-28
  • 2018-09-09
相关资源
最近更新 更多