Mid*_*aze 7 concurrency amazon-sqs amazon-web-services aws-lambda
有点背景,我正在使用 Serverless 和 .Net 来创建一个带有 SQS 触发器的 lambda。事件触发器设置为批量大小为 10k,等待时间(Batch Window ie MaximumBatchingWindowInSeconds)为 30 秒。队列的可见性超时设置为近 16 分钟。
现在我已经将 lambda 设置为仅 1 的保留并发并运行了一个测试,我向队列发送了 100 个项目,并希望看到只有一个 lambda 调用正好包含这 100 个项目。
问题是它分离了队列中的项目并改为调用 lambda 5 次,导致创建了五个包作为 lambda 功能的一部分,而不是我想要的一个包。(仅供参考,lambda 的输出会在消息的 s3 中创建包。我希望减少大包。)
现在的问题是:这是预期的行为吗?如果是这样,为什么会这样,当我将队列设置为最多累积 10k 个项目而不是 15 个时。
根据aws 文档,如果有效负载大于 256kb,则 lambda 可以获取比 batchSize 更少的消息,但我的消息非常小,100 条消息远不及 256kb。所以这不可能是原因。
也欢迎提供有关处理此问题的替代方法的建议,现在我正在考虑运行一个事件桥调度程序,该程序使用 SQS ReceiveMessage api 调用 lambda 并创建一个包,但我还必须确保之后正确删除队列.
我在这里有点无能为力,我很感激你们的任何想法。谢谢。
| 归档时间: |
|
| 查看次数: |
289 次 |
| 最近记录: |