本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
EventBridge 可以将事件从一个 AWS 账户中的事件总线发送到另一个账户中支持的 AWS 服务,从而简化事件驱动解决方案的架构并减少延迟。
例如,假设您有一组托管在多个账户中的事件总线,您需要将与安全相关的事件发送到集中式账户中的 Amazon SQS 队列以进行进一步的异步处理和分析。
EventBridge 支持向同一地区的跨账户目标发送事件。
受支持的服务
EventBridge 支持向其他 AWS 账户中的以下目标发送事件:
Amazon API Gateway APIs
Amazon Kinesis Data Streams 直播
Lambda 函数
Amazon SNS 主题
Amazon SQS 队列
有关定价,请参阅 Amazon EventBridge 定价
权限
启用对作为目标的 AWS 服务的跨账户事件交付的访问权限涉及以下步骤:
指定执行角色
将资源策略附加到目标
指定执行角色
指定在触发 EventBridge 规则时向目标发送事件时使用的执行角色。
此执行角色必须与事件总线位于同一个账户中。 EventBridge 尝试调用目标时担任此角色,并且会应用影响此帐户的所有服务控制策略 (SCPs)。
SCPs 是一种组织策略,可用于管理组织中的权限。有关更多信息,请参阅 AWS Organizations 用户指南中的服务控制策略。
例如,以下策略允许 EventBridge 服务担任执行角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
以下策略允许该角色向 Amazon SQS 队列发送消息:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "
target-queue-arn
" } ] }
对于使用的账户 AWS Organizations,您可以应用 SCP 来防止调用不属于您的组织的资源,如以下示例所示:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "*" ], "Resource": "*", "Effect": "Deny", "Condition": { "StringNotEquals": { "aws:ResourceOrgID": "
o-1234567890
" } } } ] }
注意
对于事件总线以外的跨账户目标,不支持PutTarget
从与事件总线不同的账户进行调用,即使从调用方账户提供执行角色也是如此。
将资源访问策略附加到目标
可以接收跨账户事件的 AWS 服务支持基于 IAM 资源的策略。这使您可以将资源访问策略附加到目标,因此您可以指定哪个账户有权访问该策略。
基于我们之前的示例,以下策略允许事件总线账户访问目标账户中的 Amazon SQS 队列:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "SQS:SendMessage" ], "Effect": "Allow", "Resource": "
target-queue-arn
", "Principal": { "AWS": "source-account-id
" } } ] }
有关更多信息,请参阅《用户指南》中的基于身份的策略和基于资源的策略。AWS Identity and Access Management
创建向其他账户中的 AWS 服务发送事件的规则
将其他账户中的 AWS 服务指定为目标是创建事件总线规则的一部分。
使用控制台创建向不同 AWS 账户中的 AWS 服务发送事件的规则
遵循创建可对 Amazon 中的事件做出反应的规则 EventBridge过程中的步骤。
在选择目标步骤中,当系统提示您选择目标类型时:
选择AWS 服务。
选择支持跨账户目标的 AWS 服务。
有关更多信息,请参阅 受支持的服务。
对于目标位置,选择其他 AWS 账户中的目标。
输入要向其发送事件的目标资源的 ARN。
从下拉列表中选择要使用的执行角色的名称。
提供您所选服务所需的任何其他信息。显示的字段因所选服务而异。
根据过程步骤,完成规则创建。