AWS Lambda 现在支持 SQS 作为事件源的最大并发

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 事件源最大并发控制功能,为开发者提供了更精细的并发管理能力,有助于优化无服务器应用程序的性能和资源使用。

阅读 77
0 条评论