【问题标题】:Call concurrent instances of AWS lambda on Cloud watch event rule在 Cloudwatch 事件规则上调用 AWS lambda 的并发实例
【发布时间】:2019-12-30 19:21:43
【问题描述】:

我每分钟设置一个触发 AWS Lambda 的云监视事件。我已将 lambda 的并发执行次数设置为 10,但它每分钟仅触发一个实例。我希望它每分钟运行 10 个并发实例。

【问题讨论】:

  • “每分钟只触发一个实例”是针对单个事件还是多个事件?

标签: amazon-web-services aws-lambda amazon-cloudwatch


【解决方案1】:

Lambda 中的并发管理方式与您的预期完全不同。 在您的情况下,您希望 单个 CloudWatch 事件每分钟触发 多个 个实例。 但是,Lambda 中的并发工作如下:认为您有触发您的 Lambda 的 CloudWatch 事件以及触发您的 Lambda 的其他 AWS 服务(例如 S3 和 DynamoDB)。当您的触发器之一激活 Lambda 时会发生什么情况,即 Lambda 实例处于活动状态并被消耗,直到 Lambda 完成其工作/计算。在此期间,总并发单位将减少 1。在那一刻,如果另一个触发器激活了 Lambda,总并发单位将再次减少。这将在您的 Lambda 实例被执行之前发生。

因此,在您的情况下,总会有一个事件(CloudWatch)触发单个 Lambda 实例,导致系统不会触发多个实例,至于它的操作,这是正确的工作方式。换句话说,您不希望将并发 lambda 执行增加到 10(或其他)以达到每分钟运行 10 个并行实例的目标。

为此,您最好创建一个调用 Lambda 的多个实例的 Lambda 编排器,然后将最后一个 Lambda 中的 Lambda 并发设置为高于 10(如果您不希望 Lambda 节流) .这种方式也非常适合管理多个实例的执行并通过更好的错误流控制自动捕获错误。

您可以参考此article 以获得 Lambda 并发行为。管理多个实例执行的 Lambda 编排器的实现非常简单。

【讨论】:

    猜你喜欢
    • 2020-07-27
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2019-07-15
    • 2020-09-20
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多