AWS Lambda 新增控制 SQS 事件源并发功能
AWS Lambda 现在提供了一种方法,允许开发者控制由 Amazon SQS 作为事件源触发的 Lambda 函数的最大并发数。通过设置最大并发数,开发者可以确定处理单个 SQS 队列消息的函数并发量,从而简化无服务器应用程序的可扩展性。
事件源映射与并发控制
- 事件源映射(ESM):允许 Lambda 函数订阅 SQS 队列,并根据队列中的消息数量进行扩展。ESM 会弹性地从队列中拉取消息并调用 Lambda 函数,同时处理的最大消息数量由 AWS 的服务限制决定。
- 并发挑战:在过去,使用 SQS 作为 Lambda 事件源时,确定适当的并发量、可见性超时和
maxReceiveCount设置一直是一个挑战。
最大并发数的意义
当 SQS 队列中有大量消息时,Lambda 会自动扩展,增加额外的函数来处理消息。这种扩展可能会消耗账户中的并发配额。为了避免这种情况,开发者可以为单个 Lambda 函数设置预留并发,确保该函数始终可以扩展到指定的并发量,但不会超过这个数量。
示例与测试
AWS 提供了一个GitHub 仓库,其中包含一个 SAM 应用程序,用于测试最大并发数。该演示应用程序部署了一个运行 10 秒的 Lambda 函数、一个最大并发数为 5 的事件源映射,以及一个可见性超时为 20 秒的 SQS 队列,以模拟高并发场景。
社区反馈
- Yan Cui(AWS Serverless Hero):认为这是解决 SQS 过度拉取问题的官方解决方案,过去的最佳解决方案是使用 FIFO 队列并通过组 ID 管理并发。
- Zac Charles(Stedi 的 Serverless 工程师):虽然新的最大并发功能是真正的解决方案,但如果可用并发达到零,仍然可能遇到 SQS 过度拉取问题。
功能使用与限制
- 可用并发:由并发执行配额、总预留并发和当前正在进行的调用数量之间的差值决定。
- 费用:使用此功能不会产生额外费用。
- 设置方式:开发者可以通过控制台、CLI、SAM 或 SDK 为 Amazon SQS 设置最大并发数,最小支持值为 2,最大为 1000。
总结
AWS Lambda 新增的 SQS 事件源最大并发控制功能,为开发者提供了更精细的并发管理能力,有助于优化无服务器应用程序的性能和资源使用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。