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

AWS SQS→EventBridge Pipe→SNS→SQS链路JSON格式丢失问题排查

问题原因及解决方案

核心原因

问题出在EventBridge Pipe的消息转换逻辑上:

  • 当Pipe从SQS源读取消息时,默认会传递整个SQS消息的完整结构(包含MessageId、ReceiptHandle、Body等字段),而非只提取你需要的Body中的报表元数据JSON。
  • 若未配置Pipe的输入转换规则,SNS收到的会是包含SQS消息结构的嵌套JSON,而非原始报表元数据。此时即使开启了SQS订阅的Raw delivery,最终收到的消息体是这个嵌套JSON的字符串形式(而非原始JSON对象),导致反序列化失败。
  • 直接向SNS发布消息时,你传递的是原始报表元数据JSON,SNS直接将其作为消息体发送,因此订阅队列能收到正确格式的内容。

解决方案

1. 配置EventBridge Pipe的输入转换规则

在Pipe的目标配置中添加Input Transformer,仅提取SQS消息的Body字段传递给SNS:

  • 输入路径设置为:{"body": "$.Body"}
  • 输入模板设置为:<body>
    这样Pipe会直接将SQS消息体中的原始JSON内容发送给SNS,而非整个SQS消息结构。

2. 验证SNS订阅的Raw Delivery设置

确认Report-Ready-TTL-Monitor SQS订阅Report-Ready SNS主题时:

  • 已开启Raw message delivery选项(该选项会跳过SNS默认的消息包装,直接将消息体发送到SQS)
  • 订阅协议选择的是Amazon SQS,无额外格式转换设置

3. 排查Pipe的输出日志

在Pipe的目标配置中开启CloudWatch日志记录,查看Pipe发送到SNS的消息内容:

  • 如果日志显示原始报表元数据JSON,说明转换规则生效,问题可能在SNS订阅端
  • 如果日志显示包含SQS消息结构的嵌套JSON,说明转换规则未正确配置

4. 确认SQS发送端的消息格式

确保向Report-Built SQS发送消息时,是将报表元数据序列化为标准JSON字符串后发送(这一步你已通过直接发SNS验证,大概率无问题,但可再次确认)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:12:20