AWS EventBridge Pipe对接SQS FIFO队列失败,求助排查
排查EventBridge Pipe TargetStageFailed问题
一、获取详细错误信息
- 查看CloudWatch日志:EventBridge Pipe会自动生成对应日志组(格式通常为
/aws/vendedlogs/pipes/<PipeName>),日志中会记录执行阶段的具体错误细节,比如JSON路径解析失败、权限缺失、消息格式不合法等。 - 使用AWS CLI查询执行状态:运行命令
aws pipes describe-pipe --name integration-pipe,查看返回结果中的LastExecutionSummary字段,该字段包含最近一次执行失败的具体原因描述。 - 检查死信队列(若已配置):如果目标FIFO队列关联了死信队列,查看死信队列中的消息,消息附带的元数据会包含发送失败的原因。
二、修复配置中的路径错误
结合你提供的Kinesis事件负载和CloudFormation配置,存在两处致命的JSON路径错误:
- MessageGroupId路径错误
Kinesis事件中sfId的正确路径是$.data.sfId,但配置中写为$.data.data.sfId,多了一层冗余的data节点,导致无法提取FIFO队列必填的分组ID,直接触发发送失败。 - InputTemplate路径错误
事件负载里的业务字段路径为$.data.object、$.data.eventName、$.data.id、$.data.mode,但InputTemplate中错误地写成了$.data.data.object等格式,会导致模板渲染失败,生成无效的消息内容。
修正后的TargetParameters配置示例:
TargetParameters: SqsQueueParameters: MessageDeduplicationId: "$.data.id" MessageGroupId: "$.data.sfId" InputTemplate: > { "object": <$.data.object>, "eventName": <$.data.eventName>, "id": <$.data.id>, "mode": <$.data.mode> }
三、验证权限配置
- 确认PipeRole具备以下权限:
- 读取Kinesis流的权限:
kinesis:GetRecords、kinesis:GetShardIterator、kinesis:DescribeStream - 向SQS FIFO队列发送消息的权限:
sqs:SendMessage
- 读取Kinesis流的权限:
- 检查SQS队列的访问策略,确保允许PipeRole的ARN执行
sqs:SendMessage操作。
内容的提问来源于stack exchange,提问作者Tobias
相关产品推荐
相关产品推荐

