教程:使用 Amazon EventBridge 监控对您的组织进行的重要更改 - Amazon Organizations
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

教程:使用 Amazon EventBridge 监控对您的组织进行的重要更改

本教程将演示如何配置 Amazon EventBridge(之前称为 Amazon CloudWatch Events)来监控组织中的更改。首先,学会配置一条规则,当用户调用特定 Amazon Organizations 操作时即触发该规则。然后,您可将 Amazon EventBridge 配置为在触发规则后运行 Amazon Lambda 函数,并将 Amazon SNS 配置为发送一封电子邮件,其中包含有关该事件的详细信息。

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

步骤 1:配置跟踪和事件选择器

中创建称为跟踪Amazon CloudTrail的日志。对其进行配置,捕获所有 API 调用。

步骤 2:配置 Lambda 函数

创建 Amazon Lambda 函数,将事件的详细信息记录到 S3 存储桶中。

步骤 3:创建 Amazon SNS 主题,向订阅者发送电子邮件

创建一个 Amazon SNS 主题,向其订阅者发送电子邮件,然后自己订阅该主题。

步骤 4:创建 Amazon EventBridge 规则

创建一条规则,要求 Amazon EventBridge 将指定 API 调用的详细信息传递给 Lambda 函数,并发送给 SNS 主题的订阅用户。

步骤 5:测试您的 Amazon EventBridge 规则

运行某项监控操作,测试您的新规则。在本教程中,所监控的操作是创建组织部门 (OU)。您可以查看 Lambda 函数创建的日志条目,并查看 Amazon SNS 发送给订阅者的电子邮件。

提示

您还可以将本教程用作配置类似操作的指南,如在账户创建完成时发送电子邮件通知。因为创建账户是异步操作,所以在默认情况下,在完成时不会通知您。有关在 Amazon Organizations 中将 Amazon CloudTrail 和 Amazon EventBridge 结合使用的更多信息,请参阅 Amazon Organizations 中的日志记录和监控

前提条件

本教程假定:

  • 您可以从组织的管理账户中以 IAM 用户的身份登录 Amazon Web Services Management Console。IAM 用户必须拥有权限,以在 CloudTrail 中创建和配置日志,在 Lambda 中创建和配置函数,在 Amazon SNS 中创建和配置主题,在 Amazon EventBridge 中创建和配置规则。有关授予权限的更多信息,请参阅《IAM 用户指南》中的访问管理,或参阅要配置访问权限的服务的指南。

  • 您可以访问现有的 Amazon Simple Storage Service(Amazon S3)存储桶(或有权限创建存储桶),用于接收在第一步配置的 CloudTrail 日志。

重要

目前,Amazon Organizations 只在美国东部(弗吉尼亚北部)区域托管(尽管它面向全球提供)。要执行本教程中的步骤,您必须配置 Amazon Web Services Management Console,才能使用该区域。

步骤 1:配置跟踪和事件选择器

在此步骤中,您登录管理账户并在 Amazon CloudTrail 中配置日志(称为跟踪)。您还需配置跟踪的事件选择器,以捕获所有读/写 API 调用,这样 Amazon EventBridge 就有了可以触发的调用。

创建跟踪
  1. 以组织管理账户的管理员身份登录Amazon,然后通过 https://console.amazonaws.cn/cloudtrail/ 打开 CloudTrail 控制台。

  2. 在控制台右上角的导航栏中,选择美国东部(弗吉尼亚北部)区域。如果您选择其他区域,Amazon Organizations 不会在 Amazon EventBridge 配置设置中作为一个选项出现,CloudTrail 也不会捕获 Amazon Organizations 的相关信息。

  3. 在导航窗格中,选择 Trails(跟踪记录)。

  4. 选择 Create trail (创建跟踪)

  5. 对于 Trail name (跟踪名称),输入 My-Test-Trail

  6. 执行下列选项之一来指定 CloudTrail 将日志提交到的位置:

    • 如果您需要创建存储桶,请选择 Create new S3 bucket(创建新 S3 存储桶),然后在 Trail log bucket and folder(跟踪日志存储桶和文件夹)中输入新存储桶的名称。

      注意

      S3 存储桶的名称必须是全球唯一的。

    • 如果您已有一个存储桶,选择 Use existing S3 bucket(使用现有 S3 存储桶),然后从 S3 bucket(S3 存储桶)列表中选择存储桶名称。

  7. 选择下一步

  8. Choose log events(选择日志事件)页面的 Management events(管理事件)部分中,选择 Read(读取)和 Write(写入)。

  9. 选择下一步

  10. 检查您的选择,然后选择 Create trail(创建跟踪)。

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

步骤 2:配置 Lambda 函数

在本步骤中,您将创建记录 API 活动的 Lambda 函数,这些活动由您稍后配置的 Amazon EventBridge 规则发送给函数。

创建记录 Amazon EventBridge 事件的 Lambda 函数
  1. 从 Amazon Lambda 打开 https://console.amazonaws.cn/lambda/ 控制台。

  2. 如果您是首次使用 Lambda,请在欢迎页面上选择 Get Started Now(立即开始使用);否则,选择 Create function(创建函数)。

  3. Create function(创建函数)页面中,选择 Use a blueprint(使用蓝图)。

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

  5. 选择 Configure(配置)。

  6. Basic information (基本信息) 页面上,执行以下操作:

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

    2. 对于 Role (角色),选择 Create a new role with basic Lambda permissions (创建具有基本 Lambda 权限的新角色)。此角色授予您的 Lambda 函数访问所需数据的权限和写入输出日志的权限。

  7. 编辑 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 字符串。

  8. 选择 Create function(创建函数)。

步骤 3:创建 Amazon SNS 主题,向订阅者发送电子邮件

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

创建 Amazon SNS 主题,向订阅者发送电子邮件
  1. https://console.amazonaws.cn/sns/v3/ 打开 Amazon SNS 控制台。

  2. 在导航窗格中,选择 Topics (主题)

  3. 选择 Create new topic (创建新主题)

    1. 对于 Topic name (主题名称),输入 OrganizationsCloudWatchTopic

    2. 对于 Display name (显示名称),输入 OrgsCWEvnt

    3. 选择 创建主题

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

  5. 选择创建订阅

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

    2. 对于 Endpoint (终端节点),输入您的电子邮件地址。

    3. 选择 Create subscription (创建订阅)。Amazon 将向前一步中指定的电子邮件地址发送电子邮件。收到这封电子邮件后,选择电子邮件中的 Confirm subscription (确认订阅) 链接,验证您已成功接收到这封电子邮件。

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

步骤 4:创建 Amazon EventBridge 规则

现在,您的账户中存在所需的 Lambda 函数,您可以创建 Amazon EventBridge 规则,在满足该规则的条件时调用该函数。

创建 EventBridge 规则
  1. https://console.amazonaws.cn/events/ 打开 Amazon EventBridge 控制台。

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

  3. 有关创建规则的说明,请参阅 Amazon EventBridge 用户指南中的 Getting started with Amazon EventBridge(Amazon EventBridge 入门)。

步骤 5:测试您的 Amazon EventBridge 规则

在此步骤中,您将创建一个组织单元(OU),然后观察 Amazon EventBridge 规则,生成日志条目,并向您发送有关事件详细信息的电子邮件。

Amazon Web Services Management Console
创建 OU
  1. 打开 Amazon Organizations 控制台的Amazon Web Services 账户

  2. 选择复选框 Root OU,选择 Actions (操作),然后在 Organizational unit (组织部门) 下选择 Create new (新建)

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

查看 EventBridge 日志条目
  1. https://console.amazonaws.cn/cloudwatch/ 打开 CloudWatch 控制台。

  2. 在导航窗格中,选择 Logs (日志)

  3. Log Groups (日志组) 下,选择与您的 Lambda 函数关联的组:/aws/lambda/LogOrganizationEvents

  4. 每个组包含一个或多个流,应该有一个今天的组。选择这个组。

  5. 查看日志。您应该可以看到与以下内容类似的行:

  6. 选择条目中间的行,查看收到事件的完整 JSON 文本。您可以在输出的 requestParametersresponseElements 部分查看 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" } }, "requestID": "123456-EXAMPLE-GUID-123456", "eventID": "123456-EXAMPLE-GUID-123456", "eventType": "AwsApiCall" } }
  7. 检查您的电子邮件账户是否收到来自 OrgsCWEvnt 的邮件(您的 Amazon SNS 主题的显示名称)。电子邮件正文中包含与上一步所示的日志条目相同的 JSON 文本输出。

清理:删除您不再需要的资源

为避免产生费用,您应删除本教程要求您创建,而您也不希望保留的全部 Amazon 资源。

清理您的 Amazon 环境
  1. 使用 CloudTrail 控制台 删除您通过步骤 1 创建的、名为 My-Test-Trail 的跟踪。

  2. 如果您在步骤 1 中创建了 Amazon S3 存储桶,请使用 Amazon S3 控制台将其删除。

  3. 使用 Lambda 控制台删除您通过步骤 2 创建的、名为 LogOrganizationEvents 的函数。

  4. 使用 Amazon SNS 控制台删除您通过步骤 3 创建的、名为OrganizationsCloudWatchTopic 的 Amazon SNS 主题。

  5. 使用 CloudWatch 控制台,删除您通过步骤 4 创建的名为 OrgsMonitorRule 的 EventBridge 规则。

  6. 使用 Organizations 控制台删除您通过步骤 5 创建的、名为 TestCWEOU 的 OU。

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