使用AWS Pipes将DynamoDB事件推送至EventBridge遇阻求助
排查AWS Pipes未触发Lambda的问题
1. 检查Pipe的状态与核心配置
- 确认Pipe处于
RUNNING状态:去AWS Pipes控制台查看目标Pipe的状态,要是处于STOPPED或CREATING状态,事件根本不会流转。 - 核对源DynamoDB流配置:确保流的ARN正确,且触发条件包含
INSERT(你是写入数据,这个选项必须勾选)。 - 检查EventBridge目标配置:确认总线ARN无误,同时Pipe的执行角色要有
events:PutEvents权限——CloudFormation模板里得给角色添加这个权限。
2. 验证EventBridge规则的转发逻辑
- 检查规则的事件模式:Pipe转发到EventBridge的事件会携带Pipe元数据,你的规则模式必须匹配这个结构,否则会出现匹配失败的情况。
- 确认规则目标指向正确Lambda:去EventBridge规则页面查看目标配置,Lambda的ARN要准确,且EventBridge的执行角色得有
lambda:InvokeFunction权限。
3. 排查IAM权限问题
- Pipe执行角色权限:必须包含
dynamodb:DescribeStream、dynamodb:GetRecords、dynamodb:GetShardIterator、dynamodb:ListStreams(读取DynamoDB流),以及events:PutEvents(向EventBridge发送事件)这几项权限。 - Lambda相关权限:EventBridge的服务角色得具备调用Lambda的权限,同时Lambda自身的执行角色要有必要的运行权限,还要确认没有被权限边界限制。
- 排查SCP限制:查看账号是否有服务控制策略(SCP)限制了Pipes、EventBridge或Lambda的操作,这也可能导致事件断流。
4. 查看日志和监控指标
- 查看Pipe的CloudWatch日志:找到Pipe对应的日志组,检查是否有权限报错、事件转换失败这类异常信息。
- 查看EventBridge规则的监控:在规则页面查看“已匹配的事件”指标,要是数值为0,说明规则没匹配到Pipe发送的事件;有匹配但Lambda没收到,就检查规则目标配置或Lambda日志。
- 检查Lambda的CloudWatch日志:查看是否有调用记录,或是执行报错、触发被拒绝的相关信息。
5. 检查事件过滤与转换配置
- 事件过滤:如果Pipe设置了过滤条件,确认你的测试数据满足过滤规则,避免被误过滤掉。
- 事件转换:如果Pipe配置了事件转换模板,检查模板是否写错,会不会导致EventBridge无法识别事件结构,进而匹配不上规则。
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

