【问题标题】:SQS triggers Lambda with multiple records/messages?SQS 用多条记录/消息触发 Lambda?
【发布时间】:2018-07-30 23:24:28
【问题描述】:

我观察到一个异常(嗯,在我的 POV 中)功能,当我设置 SQS 以触发 Lambda 时,当新消息到达时,lambdas 会在其事件主体内触发超过 1 条记录/消息。

完整设置是 S3 (PutObjectEvent) -> SNS 主题 -> SQS -> Lambda。

异常行为是,例如,假设我在 S3 中放置了 15 个对象,然后每个对象将一个事件转发到 SNS,然后我可以观察到,SQS 填充了 15 条消息。但是,当 Lambda 开始触发时,在这 15 条消息中,只有 11 条 Lambda 触发,其中一些在其事件主体中包含超过 1 条记录/消息。

我浏览了 AWS 文档,但没有找到具体的答案。请注意,这些 Lambda 不会轮询 SQS 或失败或继续重试。它们执行得非常好,只是被检查的事件主体在其中显示了超过 1 条记录。

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-sqs


    【解决方案1】:

    查看 SQS Lambda 消息here 的示例事件数据。消息是一个记录数组,直接暗示消息中可能有多个SQS记录。

    The documentation on SQS Lambda integration 还明确指出,Batch Size 设置控制 Lambda 函数在一次调用中可以从 SQS 接收多少记录,默认为10。如果您只希望您的 Lambda 函数一次接收一条消息,则需要将 Batch Size 设置修改为 1

    【讨论】:

    • 太棒了!感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2019-08-16
    • 2018-09-30
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2019-08-24
    相关资源
    最近更新 更多