

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将事件发送到另一个账户中的某项 AWS 服务 EventBridge
<a name="eb-service-cross-account"></a>

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

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

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

## 受支持的服务
<a name="eb-service-cross-account-services"></a>

EventBridge 支持向其他 AWS 账户中的以下目标发送事件：
+ Amazon API Gateway APIs
+ Amazon Kinesis Data Streams 直播
+ Lambda 函数
+ Amazon SNS 主题
+ Amazon SQS 队列

有关定价，请参阅 [Amazon EventBridge 定价](https://aws.amazon.com/eventbridge/pricing/)。

## Permissions
<a name="eb-service-cross-account-permissions"></a>

启用对作为目标的 AWS 服务的跨账户事件交付的访问权限涉及以下步骤：
+ 指定执行角色
+ 将资源策略附加到目标

### 指定执行角色
<a name="eb-service-cross-account-permissions-role"></a>

指定在触发 EventBridge 规则时向目标发送事件时使用的执行角色。

此执行角色必须与事件总线位于同一个账户中。 EventBridge 尝试调用目标时担任此角色，并且会应用影响此帐户的所有服务控制策略 (SCPs)。

SCPs 是一种组织策略，可用于管理组织中的权限。有关更多信息，请参阅《AWS Organizations 用户指南》**中的[服务控制策略](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。

例如，以下策略允许 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`，即便提供了该调用账户中的执行角色。

### 将资源访问策略附加到目标
<a name="eb-service-cross-account-permissions-policy"></a>

可以接收跨账户事件的 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 用户指南》**中的[基于身份的策略和基于资源的策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)。

## 创建向其他账户中的 AWS 服务发送事件的规则
<a name="eb-service-cross-account"></a>

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

**使用控制台创建向不同 AWS 账户中的 AWS 服务发送事件的规则**

1. 遵循[在 Amazon 中创建规则 EventBridge](eb-create-rule-visual.md)过程中的步骤。

1. 在[选择目标](eb-create-rule-wizard.md#eb-create-rule-target)步骤中，当系统提示您选择目标类型时：

   1. 选择**AWS 服务**。

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

      有关更多信息，请参阅 [受支持的服务](#eb-service-cross-account-services)。

   1. 对于**目标位置**，选择**其他 AWS 账户中的目标**。

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

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

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

1. 根据过程步骤，完成规则创建。