AWS EventBridge自定义事件无法触发Kinesis数据流,求排查思路
EventBridge到Kinesis数据流无数据的排查线索
核对事件模式与规则绑定
- 确认事件模式中的
source值和测试发送的com.mycompany.poc.eventbus完全一致(AWS事件模式匹配区分大小写) - 检查规则是否绑定了正确的自定义事件总线,避免误绑定到默认事件总线
- 查看规则的完整事件模式,确认没有额外的
detail-type、detail等字段限制,导致测试事件不匹配
- 确认事件模式中的
验证Kinesis目标配置
- 确认规则选择的Kinesis数据流ARN完全正确,包括区域和数据流名称
- 检查目标的分区键设置:如果使用自定义分区键(如
$.detail.some-key),确认测试事件中存在对应字段,语法无错误 - 查看批量投递配置(批量大小、批量窗口),测试单条事件时,确认批量窗口未设置过长导致延迟投递
检查IAM角色配置
- 确认角色的信任策略允许
events.amazonaws.com扮演该角色,示例信任策略:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } - 确认权限策略包含
kinesis:PutRecord和kinesis:PutRecords动作,且资源指向目标Kinesis数据流的ARN
- 确认角色的信任策略允许
查看EventBridge规则状态与指标
- 确认规则处于启用状态,未被误禁用
- 进入规则的「指标」页面,查看
Invocations(调用次数)和FailedInvocations(失败调用次数)指标,判断规则是否触发或存在投递失败 - 尝试重新保存规则,确保配置变更完全生效
测试Kinesis数据流可用性
- 使用AWS CLI手动向数据流发送测试数据,验证数据流本身是否正常:
aws kinesis put-record --stream-name 你的数据流名称 --data "test-content" --partition-key "test-key" --region 你的区域 - 若手动发送成功,说明问题出在EventBridge投递环节;若失败,排查Kinesis数据流的状态或权限
- 使用AWS CLI手动向数据流发送测试数据,验证数据流本身是否正常:
确认事件总线资源策略(自定义总线)
- 检查自定义事件总线的资源策略,确认允许EventBridge规则将事件投递到Kinesis目标(此步骤优先级较低,因CloudWatch目标已正常工作)
内容的提问来源于stack exchange,提问作者Pablo DC
相关产品推荐
相关产品推荐

