为什么 Lambda 在从 SQS 调用时会受到限制?

问题描述 投票:0回答:2

我有一个 SQS 队列,用作 Lambda 函数的事件源。由于数据库连接限制,我将 Lambda 函数的最大并发数设置为 5。

正常情况下,一切正常,但是当我们需要进行更改时,我们故意禁用SQS触发器。消息开始按预期备份在 SQS 队列中。

重新启用触发器时,会实例化 5 个 Lambda 函数,并开始处理队列中的消息,但我也看到 CloudWatch 告诉我 Lambda 受到限制。

请有人解释一下为什么会发生这种情况?我希望可用的 Lambda 函数能够尽可能快地处理积压的工作,并且不会因为队列而出现限制。

amazon-web-services aws-lambda amazon-sqs
2个回答
2
投票

这是预期的行为。

“达到与函数关联的并发限制后,对该函数的任何进一步调用请求都会受到限制,即该调用不会执行您的函数。每个受限制的调用都会增加该函数的 Amazon CloudWatch Throttles 指标”

https://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html


0
投票

粘贴表单 aws 文档:

SQS 作为事件源推出最大并发数允许您控制每个源的 Lambda 函数并发数。您可以在事件源映射上设置最大并发数,而不是在 Lambda 函数上设置。

总结:因此,在这种情况下,您将事件源映射的并发度设置为 5 或小于 5,以使 lambda 不会受到限制。

文档链接:https://docs.aws.amazon.com/lambda/latest/dg/inspiration-eventsourcemapping.html

© www.soinside.com 2019 - 2024. All rights reserved.