【问题标题】:Is there a way to make sure to run lambda in sequence有没有办法确保按顺序运行 lambda
【发布时间】:2020-12-31 08:57:17
【问题描述】:

我正在寻找一种方法来让我的 lambda 处理来自队列或事件总线的事件。但我需要确保只有一个 lambda 实例在运行。我需要将并发限制设置为 1,以确保 lambda 没有并发执行。

如果我使用 SQS 或事件总线作为流式传输到 lambda 的源,我如何确保它们在 lambda 运行时不会触发它?否则我的 lambda 将很容易受到限制。有没有办法控制 SQS 仅在空闲时向 lambda 发送事件?

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    您可以使用预留并发有效地为您的函数设置并发限制 - 请参阅:https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html

    相关摘录为:

    保证一个函数总能达到一定的水平 并发,配置保留并发的功能。当一个 函数已保留并发,没有其他函数可以使用它 并发。 预留并发也限制了最大并发 对于函数,并应用于整个函数,包括 版本和别名。

    【讨论】:

    • 如何确保我的 lambda 不受限制?
    • 我以为您要的是如何一次将其限制为一次执行?我不明白你在找什么吗?如果您将预留并发设置为 1,它将始终在您的账户中执行 1 次,并且永远不会超过该次数。然后,您帐户中的其他函数最多可以有 999 (1000 - 1) 个并发执行。
    • 是的,你是对的,这就是我想要的
    • 那么保留并发就是你想要的。它将确保一次只能运行 1 个副本。
    • 是的,但是如果有另一个从 SQS 或事件总线发送的事件,它会限制我的 lambda 对吗?有没有办法让我控制 SQS 仅在 lambda 空闲时发送事件?