教程:使用 Amazon 监控组织的重要变更 EventBridge - AWS Organizations

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

教程:使用 Amazon 监控组织的重要变更 EventBridge

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

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

Five-step process for creating and configuring AWS 服务, from trail creation to rule testing.

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

在中创建名为跟踪的日志 AWS CloudTrail。 您可以将其配置为捕获所有API呼叫。

步骤 2:配置 Lambda 函数

创建一个 AWS Lambda 将有关事件的详细信息记录到 S3 存储桶的函数。

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

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

步骤 4:创建亚马逊 EventBridge 规则

创建一条规则,告诉 Amazon EventBridge 将指定API调用的详细信息传递给 Lambda 函数和SNS主题订阅者。

第 5 步:测试您的亚马逊 EventBridge 规则

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

提示

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

先决条件

本教程假定:

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

  • 您可以访问现有的亚马逊简单存储服务 (Amazon S3) 存储桶(或者您有权创建存储桶),以接收 CloudTrail 您在步骤 1 中配置的日志。

重要

目前, AWS Organizations 仅在美国东部(弗吉尼亚北部)地区托管(尽管它在全球范围内可用)。要执行本教程中的步骤,必须配置 AWS Management Console 使用该区域。

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

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

创建跟踪
  1. 登录到 AWS 以组织管理账户管理员的身份打开控制台,然后在上打开 CloudTrail 控制台https://console.aws.amazon.com/cloudtrail/

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

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

  4. 选择创建跟踪

  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(创建跟踪)。

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

步骤 2:配置 Lambda 函数

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

创建用于记录亚马逊事件的 Lambda 函数 EventBridge
  1. 打开 AWS Lambda 控制台位于https://console.aws.amazon.com/lambda/

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

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

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

  5. 选择 配置

  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. 打开 Amazon SNS 控制台,网址为https://console.aws.amazon.com/sns/v3/

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

  3. 选择 创建新主题

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

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

    3. 选择创建主题

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

  5. 选择创建订阅

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

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

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

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

步骤 4:创建亚马逊 EventBridge 规则

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

创建 EventBridge 规则
  1. 打开 Amazon EventBridge 控制台,网址为https://console.aws.amazon.com/events/

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

  3. 有关创建规则的说明,请参阅亚马逊 EventBridge 用户指南 EventBridge中的亚马逊入门

第 5 步:测试您的亚马逊 EventBridge 规则

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

AWS Management Console
创建 OU
  1. 打开 AWS Organizations 控制台到 AWS 账户页面

  2. 选择复选框 Blue checkmark icon indicating confirmation or completion of a task. Root OU,选择 Actions (操作),然后在 Organizational unit (组织部门) 下选择 Create new (新建)

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

查看 EventBridge 日志条目
  1. 打开 CloudWatch 控制台,网址为https://console.aws.amazon.com/cloudwatch/

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

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

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

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

    Log entries showing event reception with timestamp, version, and ID details.
  6. 选择条目的中间行,查看收到的事件的全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" } }, "requestID": "123456-EXAMPLE-GUID-123456", "eventID": "123456-EXAMPLE-GUID-123456", "eventType": "AwsApiCall" } }
  7. 检查您的电子邮件账户中是否有来自 O rgsCWEvnt(您的 Amazon SNS 主题的显示名称)的消息。电子邮件正文包含与上一步中显示的日志条目相同的JSON文本输出。

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

为避免产生费用,应删除任何 AWS 您在本教程中创建但不想保留的资源。

要清理你的 AWS environment
  1. 使用CloudTrail 控制台删除您在步骤 1 中创建My-Test-Trail的名为的跟踪。

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

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

  4. 使用亚马逊SNS控制台删除您在步骤 3 中创建OrganizationsCloudWatchTopic的名为的亚马逊SNS主题。

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

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

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