

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

# 教程：使用 Amazon 监控组织的重要变更 EventBridge
<a name="orgs_tutorials_cwe"></a>

本教程介绍如何配置 Amazon EventBridge（前身为 Amazon Ev CloudWatch ents）以监控您的组织是否有更改。首先，学会配置一条规则，当用户调用特定 AWS Organizations 操作时即触发该规则。接下来，您 EventBridge 将 Amazon 配置为在触发规则时运行 AWS Lambda 函数，并将 Amazon SNS 配置为发送一封包含事件详细信息的电子邮件。

下图演示了本教程的主要步骤。

**[步骤 1：配置跟踪和事件选择器](#tutorial-cwe-step1)**  
在中创建名为*跟踪*的日志 AWS CloudTrail。对其进行配置，捕获所有 API 调用。

**[步骤 2：配置 Lambda 函数](#tutorial-cwe-step2)**  
创建一个 AWS Lambda 函数，将有关事件的详细信息记录到 S3 存储桶。

**[步骤 3：创建 Amazon SNS 主题，向订阅者发送电子邮件](#tutorial-cwe-step3)**  
创建一个 Amazon SNS 主题，向其订阅者发送电子邮件，然后自己订阅该主题。

**[步骤 4：创建亚马逊 EventBridge 规则](#tutorial-cwe-step4)**  
创建一条规则，告诉亚马逊 EventBridge 将指定 API 调用的详细信息传递给 Lambda 函数和 SNS 主题订阅者。

**[第 5 步：测试您的亚马逊 EventBridge 规则](#tutorial-cwe-step5)**  
运行某项监控操作，测试您的新规则。在本教程中，所监控的操作是创建组织部门 (OU)。您可以查看 Lambda 函数创建的日志条目，并查看 Amazon SNS 发送给订阅者的电子邮件。

**提示**  
您还可以将本教程用作配置类似操作的指南，如在账户创建完成时发送电子邮件通知。因为创建账户是异步操作，所以在默认情况下，在完成时不会通知您。有关使用 AWS CloudTrail 和 Amazon EventBridge 的更多信息 AWS Organizations，请参阅[登录和监控 AWS Organizations](orgs_security_incident-response.md)。

## 先决条件
<a name="tutorial-cwe-prereqs"></a>

本教程假定：
+ 您可以以 IAM 用户 AWS 管理控制台 身份从组织中的管理账户登录。IAM 用户必须有权创建和配置登录信息 CloudTrail、Lambda 中的函数、Amazon SNS 中的主题以及亚马逊中的规则。 EventBridge有关授予权限的更多信息，请参阅《IAM 用户指南》**中的[访问管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)，或参阅要配置访问权限的服务的指南。
+ 您可以访问现有的亚马逊简单存储服务 (Amazon S3) 存储桶（或者您有权创建存储桶），以接收 CloudTrail 您在步骤 1 中配置的日志。

**重要**  
目前， AWS Organizations 仅在美国东部（弗吉尼亚北部）地区托管（尽管它在全球范围内可用）。要执行本教程中的步骤，必须将配置 AWS 管理控制台 为使用该区域。

## 步骤 1：配置跟踪和事件选择器
<a name="tutorial-cwe-step1"></a>

在此步骤中，您登录管理账户并在 AWS CloudTrail中配置日志（称为*跟踪*）。您还可以在跟踪中配置事件选择器以捕获所有 read/write API 调用，这样 Amaz EventBridge on 就可以触发调用。

**创建跟踪**

1. 以 AWS 组织管理账户管理员的身份登录，然后在打开 CloudTrail 控制台[https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/)。

1. 在控制台右上角的导航栏中，选择**美国东部（弗吉尼亚北部）**区域。如果您选择其他区域，则 AWS Organizations 不会作为选项显示在 Amazon EventBridge 配置设置中，也 CloudTrail 不会捕获相关信息 AWS Organizations。

1. 在导航窗格中，选择**跟踪**。

1. 选择**创建跟踪**。

1. 对于 **Trail name (跟踪名称)**，输入 **My-Test-Trail**。

1. 执行以下选项之一以指定其日志 CloudTrail 的传送位置：
   + 如果您需要创建存储桶，请选择 **Create new S3 bucket**（创建新 S3 存储桶），然后在 **Trail log bucket and folder**（跟踪日志存储桶和文件夹）中输入新存储桶的名称。
**注意**  
S3 存储桶的名称必须是***全球***唯一的。
   + 如果您已有一个存储桶，选择 **Use existing S3 bucket**（使用现有 S3 存储桶），然后从 **S3 bucket**（S3 存储桶）列表中选择存储桶名称。

1. 选择**下一步**。

1. 在 **Choose log events**（选择日志事件）页面的 **Management events**（管理事件）部分中，选择 **Read**（读取）和 **Write**（写入）。

1. 选择**下一步**。

1. 检查您的选择，然后选择 **Create trail**（创建跟踪）。

当警报规则与传入的 API 调用匹配时，Amazon EventBridge 允许您从几种不同的方式中进行选择，以发送警报。本教程演示了两种方法：调用 Lambda 函数，该函数可记录 API 调用；向 Amazon SNS 主题发送信息，向该主题的订阅者发送电子邮件或短信。在接下来的两个步骤中，您将创建所需的组件：Lambda 函数和 Amazon SNS 主题。

## 步骤 2：配置 Lambda 函数
<a name="tutorial-cwe-step2"></a>

在此步骤中，您将创建一个 Lambda 函数，用于记录由您稍后配置的 Amazon EventBridge 规则发送给它的 API 活动。

**创建用于记录亚马逊事件的 Lambda 函数 EventBridge**

1. 打开 AWS Lambda 控制台，网址为[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)。

1. 如果您是首次使用 Lambda，请在欢迎页面上选择 **Get Started Now**（立即开始使用）；否则，选择 **Create function**（创建函数）。

1. 在 **Create function**（创建函数）页面中，选择 **Use a blueprint**（使用蓝图）。

1. 从 **Blueprints (蓝图)** 搜索框中，为筛选条件输入 **hello**，然后选择 **hello-world** 蓝图。

1. 选择**配置**。

1. 在 **Basic information (基本信息)** 页面上，执行以下操作：

   1. 对于 Lambda 函数名称，在 ** Name (名称)** 文本框中输入 **LogOrganizationEvents**。

   1. 对于**角色**，选择**创建具有基本 Lambda 权限的新角色**。此角色授予您的 Lambda 函数访问所需数据的权限和写入输出日志的权限。

1. 编辑 Lambda 函数的代码，如以下示例所示。

   ```
   console.log('Loading function');
   
   exports.handler = async (event, context) => {
       console.log('LogOrganizationsEvents');
       console.log('Received event:', JSON.stringify(event, null, 2));
       return event.key1;  // Echo back the first key value
       // throw new Error('Something went wrong');
   };
   ```

   该示例代码使用 **LogOrganizationEvents** 标记字符串记录事件，后跟组成事件的 JSON 字符串。

1. 选择**创建函数**。

## 步骤 3：创建 Amazon SNS 主题，向订阅者发送电子邮件
<a name="tutorial-cwe-step3"></a>

在此步骤中，您将创建 Amazon SNS 主题，向订阅者发送电子邮件信息。您可以将此主题作为稍后创建的 Amazon EventBridge 规则的目标。

**创建 Amazon SNS 主题，向订阅者发送电子邮件**

1. 从 [https://console.aws.amazon.com/sns/v3/](https://console.aws.amazon.com/sns/v3/) 打开 Amazon SNS 控制台。

1. 在导航窗格中，选择**主题**。

1. 选择 **创建新主题**。

   1. 对于 **Topic name (主题名称)**，输入 **OrganizationsCloudWatchTopic**。

   1. 对于 **Display name (显示名称)**，输入 **OrgsCWEvnt**。

   1. 选择**创建主题**。

1. 现在，您可以创建该主题的订阅。选择您刚刚创建的主题的 ARN。

1. 选择**创建订阅**。

   1. 在 **Create subscription (创建订阅)** 页面上，为 **Protocol (协议)** 选择 **Email (电子邮件)**。

   1. 对于**端点**，输入您的电子邮件地址。

   1. 选择**创建订阅**。 AWS 向您在上一步中指定的电子邮件地址发送一封电子邮件。收到这封电子邮件后，选择电子邮件中的 **Confirm subscription (确认订阅)** 链接，验证您已成功接收到这封电子邮件。

   1. 返回控制台并刷新页面。**Pending confirmation** 消息消失，现已替换为有效的订阅 ID。

## 步骤 4：创建亚马逊 EventBridge 规则
<a name="tutorial-cwe-step4"></a>

既然您的账户中已存在所需的 Lambda 函数，那么您可以创建一个 Amazon EventBridge 规则，当满足规则中的条件时，该规则就会调用该规则。

**创建 EventBridge 规则**

1. 打开 Amazon EventBridge 控制台，网址为[https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)。

1. 您必须将控制台设置为**美国东部（弗吉尼亚州北部）**区域，否则有关 Organizations 的信息不可用。在控制台右上角的导航栏中，选择**美国东部（弗吉尼亚北部）**区域。

1. 有关创建规则的说明，请参阅[亚马逊 EventBridge 用户指南 EventBridge中的亚马逊规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)。

## 第 5 步：测试您的亚马逊 EventBridge 规则
<a name="tutorial-cwe-step5"></a>

在此步骤中，您将创建组织单位 (OU) 并遵守 Amazon EventBridge 规则，生成日志条目，并向自己发送一封包含活动详细信息的电子邮件。

------
#### [ AWS 管理控制台 ]

**创建 OU**

1. 打开该[**AWS 账户**页面](https://console.aws.amazon.com/organizations/v2/home/accounts)的 AWS Organizations 控制台。

1.  选择复选框 ![\[Blue checkmark icon indicating confirmation or completion of a task.\]](http://docs.aws.amazon.com/zh_cn/organizations/latest/userguide/images/checkbox-selected.png) **Root** OU，选择 **Actions (操作)**，然后在 **Organizational unit (组织部门)** 下选择 **Create new (新建)**。

1. 对于 OU 的名称，输入 **TestCWEOU**，然后选择 **Create organizational unit (创建组织部门)**。

------

**查看 EventBridge 日志条目**

1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中，选择 **Logs (日志)**。

1. **在**日志组**下，选择与您的 Lambda 函数关联的组：/。aws/lambda/LogOrganizationEvents**

1. 每个组包含一个或多个流，应该有一个今天的组。选择该存储桶。

1. 查看日志。您应该可以看到与以下内容类似的行：  
![\[显示组织 API 调用详细信息 CloudWatch 的事件日志示例\]](http://docs.aws.amazon.com/zh_cn/organizations/latest/userguide/images/tutorial-sample-CWE-log.png)

1. 选择条目中间的行，查看收到事件的完整 JSON 文本。您可以在输出的 `requestParameters` 和 `responseElements` 部分查看 API 请求的所有详细信息。

   ```
   2017-03-09T22:45:05.101Z 0999eb20-051a-11e7-a426-cddb46425f16 Received event:
   {
       "version": "0",
       "id": "123456-EXAMPLE-GUID-123456",
       "detail-type": "AWS API Call via CloudTrail",
       "source": "aws.organizations",
       "account": "123456789012",
       "time": "2017-03-09T22:44:26Z",
       "region": "us-east-1",
       "resources": [],
       "detail": {
           "eventVersion": "1.04",
           "userIdentity": {
               ...
           },
           "eventTime": "2017-03-09T22:44:26Z",
           "eventSource": "organizations.amazonaws.com",
           "eventName": "CreateOrganizationalUnit",
           "awsRegion": "us-east-1",
           "sourceIPAddress": "192.168.0.1",
           "userAgent": "AWS Organizations Console, aws-internal/3",
           "requestParameters": {
               "parentId": "r-exampleRootId",
               "name": "TestCWEOU"
           },
           "responseElements": {
               "organizationalUnit": {
                   "name": "TestCWEOU",
                   "id": "ou-exampleRootId-exampleOUId",
                   "arn": "arn:aws:organizations::1234567789012:ou/o-exampleOrgId/ou-exampleRootId-exampeOUId",
                   "path": "o-exampleOrgId/r-exampleRootId/ou-exampleRootId-exampleOUId/"
               }
           },
           "requestID": "123456-EXAMPLE-GUID-123456",
           "eventID": "123456-EXAMPLE-GUID-123456",
           "eventType": "AwsApiCall"
       }
   }
   ```

1. 检查您的电子邮件账户中是否有来自**组织的一封邮件CWEvnt（Amazon SNS** 主题的显示名称）。电子邮件正文中包含与上一步所示的日志条目相同的 JSON 文本输出。

## 清理：删除您不再需要的资源
<a name="clean-up-resources"></a>

为避免产生费用，您应删除在本教程中创建的所有不想保留的 AWS 资源。

**清理您的 AWS 环境**

1. 使用[CloudTrail 控制台](https://console.aws.amazon.com/cloudtrail/)删除您在步骤 1 中创建**My-Test-Trail**的名为的跟踪。

1. 如果您在步骤 1 中创建了 Amazon S3 存储桶，请使用 [Amazon S3 控制台](https://console.aws.amazon.com/s3/)将其删除。

1. 使用 [Lambda 控制台](https://console.aws.amazon.com/lambda/)删除您通过步骤 2 创建的、名为 **LogOrganizationEvents** 的函数。

1. 使用 [Amazon SNS 控制台](https://console.aws.amazon.com/sns/)删除您通过步骤 3 创建的、名为**OrganizationsCloudWatchTopic** 的 Amazon SNS 主题。

1. 使用[CloudWatch 控制台](https://console.aws.amazon.com/cloudwatch/)删除您在步骤 4 中创建**OrgsMonitorRule**的名为的 EventBridge 规则。

1. 使用 [Organizations 控制台](https://console.aws.amazon.com/organizations/)删除您通过步骤 5 创建的、名为 **TestCWEOU** 的 OU。

就是这样。在本教程中，您配置 EventBridge 为监控组织是否有更改。您配置了一条规则，当用户调用特定 AWS Organizations 操作时即触发该规则。该规则运行 Lambda 函数来记录事件，并发送包含该事件详细信息的电子邮件。