You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS SQS触发双Lambda时消息丢失问题求助

SQS触发Lambda消息丢失问题排查原因
  • 过滤器规则与消息内容不匹配
    你设置的第一个Lambda过滤器是{"body": {"ErpId": ["myErp1"]}},但发送的消息里ErpId是myErpId,拼写完全不一致,这会直接导致该Lambda的过滤器无法匹配消息,消息不会被这个Lambda处理。如果消息也不匹配另一个Lambda的过滤器,就会进入“无匹配”状态,后续处理逻辑可能导致消息看似“丢失”。
    另外要确认消息body的格式:如果发送消息时body是JSON字符串(而非原生JSON对象),Lambda触发器不会自动解析为JSON结构,此时body.ErpId的过滤规则无法生效,需要调整过滤器适配字符串格式,比如使用{"body": {"$contains": "\"ErpId\":\"myErp1\""}}。

  • 消息字段类型不匹配
    若消息中的ErpId字段是数字、布尔值等非字符串类型,而过滤器中使用字符串数组匹配,会导致匹配失败。比如消息里ErpId是数值类型,过滤器指定的是字符串"myErp1",两者无法匹配,消息不会被对应Lambda处理。

  • Lambda执行角色日志权限缺失
    如果Lambda的执行角色没有配置CloudWatch日志的写入权限(logs:CreateLogGroup、logs:CreateLogStream、logs:PutLogEvents),即使Lambda收到了消息,也无法生成日志,看起来像是消息没被处理。需要检查角色权限配置。

  • SQS批量拉取的可见性超时延迟
    SQS触发Lambda时会批量拉取消息,若某一批次中没有匹配Lambda过滤器的消息,该Lambda不会被调用,但消息会处于可见性超时状态,此时在SQS控制台无法看到这些消息。如果在可见性超时结束前检查队列,会误以为消息丢失,等超时后消息会重新回到队列。

  • 消息结构与过滤器层级不匹配
    AWS Lambda的SQS过滤器对嵌套结构的匹配有严格要求,若消息body的层级结构与过滤器不一致(比如ErpId不是直接在body下,而是嵌套在其他字段里),也会导致匹配失败。需要确认消息的JSON结构完全符合过滤器的层级要求。

内容的提问来源于stack exchange,提问作者bit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:35:04