在 EventBridge 中向另一个账户中的 AWS 服务发送事件 - Amazon EventBridge

在 EventBridge 中向另一个账户中的 AWS 服务发送事件

EventBridge 可以将事件从一个 AWS 账户中的事件总线发送到另一个账户中支持的 AWS 服务,从而简化事件驱动解决方案的架构并减少延迟。

例如,假设您有一组托管在多个账户中的事件总线,您需要将与安全相关的事件发送到集中式账户中的一个 Amazon SQS 队列,以进行进一步的异步处理和分析。

EventBridge 支持向同一区域中的跨账户目标发送事件。

受支持的服务

EventBridge 支持向其他 AWS 账户中的以下目标发送事件:

  • Amazon API Gateway API

  • Amazon Kinesis Data Streams 流

  • Lambda 函数

  • Amazon SNS 主题

  • Amazon SQS 队列

有关定价的更多信息,请参阅 Amazon EventBridge 定价

权限

要启用对作为目标的 AWS 服务的跨账户事件交付,需执行以下步骤:

  • 指定执行角色

  • 将资源策略附加到目标

指定执行角色

为 EventBridge 指定一个执行角色,以便在触发规则时向目标发送事件时使用。

此执行角色必须与事件总线位于同一账户中。EventBridge 在尝试调用目标时代入此角色,并且会应用影响该账户的所有服务控制策略(SCP)。

SCP 是一种组织策略,可用于管理组织中的权限。有关更多信息,请参阅 AWS Organizations 用户指南中的服务控制策略

例如,以下策略允许 EventBridge 服务代入执行角色:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

此外,以下策略允许该角色向 Amazon SQS 队列发送消息:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-1:123456789012:queue-name" } ] }

对于使用 AWS Organizations 的账户,您可以应用 SCP 来防止调用不属于您组织的资源,如以下示例所示:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "*" ], "Resource": "*", "Effect": "Deny", "Condition": { "StringNotEquals": { "aws:ResourceOrgID": "o-1234567890" } } } ] }
注意

对于事件总线以外的跨账户目标,不支持从与事件总线所属账户不同的账户调用 PutTarget,即便提供了该调用账户中的执行角色。

将资源访问策略附加到目标

可接收跨账户事件的 AWS 服务均支持基于 IAM 资源的策略。这意味着,您可以将资源访问策略附加到目标,从而明确指定哪些账户有权访问该目标。

基于我们之前的示例,以下策略允许事件总线账户访问目标账户中的 Amazon SQS 队列:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "SQS:SendMessage" ], "Effect": "Allow", "Resource": "arn:aws:sqs:us-east-1:123456789012:queue-name", "Principal": { "AWS": "123456789012" } } ] }

有关更多信息,请参见《AWS Identity and Access Management 用户指南》中的基于身份的策略和基于资源的策略

创建将事件发送到其他账户中 AWS 服务的规则

将其他账户中的 AWS 服务指定为目标,是创建事件总线规则的一部分。

使用控制台创建规则,以向其他 AWS 账户中的 AWS 服务发送事件
  1. 遵循在 Amazon EventBridge 中创建对事件作出反应的规则过程中的步骤。

  2. 选择目标步骤中,当系统提示您选择目标类型时:

    1. 选择AWS 服务

    2. 选择支持跨账户目标的 AWS 服务。

      有关更多信息,请参阅 受支持的服务

    3. 对于目标位置,选择其他 AWS 账户中的目标

    4. 输入要将事件发送到的目标资源的 ARN。

    5. 从下拉列表中选择要使用的执行角色的名称。

    6. 为所选服务提供要求补充的其他相关信息。显示的字段因所选服务而异。

  3. 根据过程步骤,完成规则创建。