首页 > 解决方案 > 防止 AWS Lambda 限制异步调用

问题描述

我目前正在建模一个广泛使用 S3 事件作为 lambda 函数源的无服务器应用程序。

我已经为 lambda 配置了死信队列 (DLQ) 以提供一些弹性,但我仍然想知道:有没有其他方法可以减少 lambda 并发并防止限制问题?

从理论上讲,AWS 文档声明对于异步调用,Lambda 使用内部队列来处理事件和重试,这意味着 Lambda 处理这个队列应该没有问题而没有限制。

在非无服务器应用程序中,我会使用一个队列和有限数量的队列工作人员来组织它,但是,这对于 AWS 来说并不是那么简单。

除了 DLQ 之外,还有其他方法可以处理或避免节流问题吗?

谢谢!

标签: amazon-web-servicesamazon-s3aws-lambdaamazon-sqs

解决方案


根据我的经验,将 Lambda 直接插入 S3 事件会带来很多问题,包括限制和消息丢失。

我们(在生产中)通常所做的是将所有 S3 事件推送到 SQS 并从中触发 Lambda 函数(而不是轮询)。然后,您可以更好地控制并行执行、重试和保留。

您可以使用 SNS 而不是 SQS,但我对此没有任何经验。


推荐阅读