EventBridge跨账号事件无法送达目标事件总线求助
跨账号EventBridge事件未送达目标总线的排查与修复
以下是针对你的代码问题的具体修复点和排查步骤:
1. 目标账号Event Bus策略主体错误
你当前的Event Bus策略允许源账号root用户发送事件,但实际发送事件的是源账号中cloudwatch-backup-event-role这个IAM角色,因此需要修改策略的principals为该角色的ARN:
data "aws_iam_policy_document" "event_bus_policy" { statement { sid = "AWSBackupCopyCompleteEvent" actions = ["events:PutEvents"] principals { type = "AWS" identifiers = [ "arn:aws:iam::SOURCE_ACCOUNT_ID:role/cloudwatch-backup-event-role" # 替换为源账号角色的完整ARN ] } resources = [data.aws_cloudwatch_event_bus.default_bus.arn] # 可选:添加区域限制增强安全性 condition { test = "StringEquals" variable = "aws:SourceRegion" values = ["eu-west-1"] } } }
2. 源账号事件规则detail-type不匹配
AWS Backup触发的事件类型是Copy Job State Changed(末尾带d),但你源账号规则里写的是Copy Job State Change,这个差异可能导致事件匹配异常,修正如下:
resource "aws_cloudwatch_event_rule" "rds_backup_complete" { name = "rds-backup-complete" description = "Rule to trigger event when RDS backup is complete" state = "ENABLED" event_pattern = jsonencode({ source = ["aws.backup"], detail-type = ["Copy Job State Changed"], # 修正为正确的事件类型 detail = { "state" = ["COMPLETED"], "resourceType" = ["RDS", "Aurora"], "destinationBackupVaultArn" : [{ "prefix": "arn:aws:backup:eu-west-1:DESTINATION_ACCOUNT_ID:backup-vault:", }] } }) }
3. 验证事件送达状态
- 目标账号端:在EventBridge控制台开启default总线的「事件捕获」,查看是否有来自源账号的事件。如果有事件但未触发规则,说明事件模式不匹配;如果没有事件,说明权限问题未解决。
- 源账号端:查看EventBridge规则的「触发历史」,确认事件是否成功发送,是否有
403权限拒绝等错误提示。 - CloudTrail日志:在目标账号搜索
PutEvents操作,检查请求的来源账号、状态码,定位具体报错原因。
4. 确认资源ARN正确性
检查源账号IAM策略中的目标总线ARN、目标账号规则中的账号ID,确保区域、账号ID没有拼写错误。
内容的提问来源于stack exchange,提问作者Kamelon
相关产品推荐
相关产品推荐

