当我向不同的 AWS 账户或 AWS 区域发送事件时,我的 Amazon EventBridge 目标事件规则不会启动。
简短描述
由于以下原因,事件可能无法跨账户或区域发布:
- 源账户上的事件规则未启动,或者目标调用失败。
- 源账户或组织没有正确的权限。
- 目标账户上的事件规则未启动,或者目标调用失败。
解决方法
源账户上的事件规则未启动,或者目标调用失败
仅当源账号启动事件规则并调用目标时,EventBridge 才会跨账号发布事件。
当规则的模式与传入的事件匹配时,EventBridge 会启动此规则。如果存在模式匹配,则 EventBridge 会向与匹配事件对应的 TriggeredRules 指标发送值 1。有关 EventBridge 指标的详细信息,请参阅监控 Amazon EventBridge。
如果 EventBridge 触发了规则,请检查相应规则的 Invocations 指标以确认 EventBridge 调用了目标。Invocations 指标仅显示 EventBridge 尝试调用目标的情况。该指标无法确认调用是否已完成。要检查目标调用的完成状态,请使用相应规则的 FailedInvocations 指标。如果 FailedInvocations 指标中没有数据点,但 Invocations 指标中有相应的数据点,则表明 EventBridge 已成功调用目标。
调用失败可能是因为目标账户的事件总线没有所需的权限。源账户规则目标上的 AWS Identity and Access Management (IAM) 权限不足也可能导致调用失败。
源账户或组织没有正确的权限
要接收来自其他账户或 AWS Organizations 的事件,源账户必须具有发送事件的权限。确认附加到事件总线的基于资源的策略向源账户授予了相应的权限。
具有适当权限的策略示例:
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "WebStoreCrossAccountPublish",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::SOURCE-ACC-ID:root"
},
"Action": "events:PutEvents",
"Resource": "arn:aws:events:REGION:DESTINATION-ACC-ID:event-bus/destination-account-bus-name"
}]
}
**注意:**将 SOURCE-ACC-ID 替换为源账户的 ID,将 DESTINATION-ACC-ID 替换为目标账户的 ID。
当规则的目标为事件总线时,使用 IAM 角色授予向其他账户或区域发送事件的权限。将以下基于资源的策略附加到 IAM 角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ActionsForResource",
"Effect": "Allow",
"Action": [
"events:PutEvents"
],
"Resource": [
"arn:aws:events:REGION:<DESTINATION-ACC-ID>:event-bus/destination-account-bus-name"
]
}
]
}
**注意:**将 DESTINATION-ACC-ID 替换为目标账户的 ID
然后,源账户可以在目标账户的事件总线上执行 PutEvents API 调用。
如果您使用 PutTargets 手动创建规则目标并在事件总线上为整个组织设置权限,请指定 IAM 角色。
有关所需的 IAM 权限的详细信息,请参阅授予允许来自其他 AWS 账户的事件的权限。另请参阅 Amazon EventBridge 中事件总线的权限。
目标账户上的事件规则未启动,或者目标调用失败
当您将事件发布到目标账户的事件总线时,请在事件总线上配置事件规则以匹配该事件。
要确认规则的模式与发起该规则的传入事件相匹配,请检查目标账户的规则指标。验证目标的调用是否成功。