amazon-web-services - 防止 AWS Lambda 限制异步调用
问题描述
我目前正在建模一个广泛使用 S3 事件作为 lambda 函数源的无服务器应用程序。
我已经为 lambda 配置了死信队列 (DLQ) 以提供一些弹性,但我仍然想知道:有没有其他方法可以减少 lambda 并发并防止限制问题?
从理论上讲,AWS 文档声明对于异步调用,Lambda 使用内部队列来处理事件和重试,这意味着 Lambda 处理这个队列应该没有问题而没有限制。
在非无服务器应用程序中,我会使用一个队列和有限数量的队列工作人员来组织它,但是,这对于 AWS 来说并不是那么简单。
除了 DLQ 之外,还有其他方法可以处理或避免节流问题吗?
谢谢!
解决方案
根据我的经验,将 Lambda 直接插入 S3 事件会带来很多问题,包括限制和消息丢失。
我们(在生产中)通常所做的是将所有 S3 事件推送到 SQS 并从中触发 Lambda 函数(而不是轮询)。然后,您可以更好地控制并行执行、重试和保留。
您可以使用 SNS 而不是 SQS,但我对此没有任何经验。
推荐阅读
- javascript - 我的 js 文件不断重复我之前的列表项。例如,如果我在表单上添加文本,则上一个列表项会与新列表项一起重复
- html - 为什么我的两个无序列表不能内联显示?
- php - Laminas API 工具中带有参数的自定义验证器
- reactjs - 如何使用 react-hook-forms 制作动态 watch()/usewatch()
- powershell - Powershell上的打印机名称+服务器名称
- amazon-web-services - AWS CDK - 如何在本地运行 API 和 Lambda?
- java - ProcessBuilder.start() 何时返回 null 而不是 Process 对象?
- java - Kubernetes 中的按需容器
- c# - 起订量,方法 HttpClient.SendAsync 是公开的。怎么修?
- javascript - 如何在 map() 函数中左右更改网格项的位置