如何管理触发 AWS Lambda 函数的 AWS Cloudwatch 事件突发

How to manage burst of AWS Cloud Watch events triggering an AWS Lambda function

我有一项服务每小时生成一次 Cloud Watch 事件。这些 Cloud Watch 事件(可能有数千个)每个都将触发一个 AWS Lambda 函数,最终并发 lambda 的数量 运行 可以超过最大限制。我如何修改我的系统,以便 Lambda 函数能够优雅地处理这些云监视事件,或者如果可能的话,我可以以某种方式在第一个服务的剩余时间内分发所有这些云监视事件。

P.S。我不想修改并发 运行 lambdas 的限制。

您是否考虑过将这些事件添加到 SQS 而不是直接使用 Lambda,然后配置 SQS 以调用 Lambda 函数?

这是通过 SQS 队列触发 Lambda 函数的方法

https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-lambda-function-trigger.html

并且你可以使用这篇文章来定义队列消费的延迟

https://cloudaffaire.com/how-to-configure-delay-queue-in-sqs/

如前所述,您可以使用 SQS,但我也反对这样做,因为您仍然会遇到相同的并发问题(更多 here)。

根据您需要多快的处理速度,每隔几分钟使用 lambda "poll" 一个 SQS 可能是个好主意,然后将这批消息发送到 lambda 以通过 SNS 进行处理(而不是比让 lambda 触发 SQS PutMessage API 调用)。