教程:使用 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 就有了可以触发的调用。
创建跟踪
-
以组织管理账户的管理员身份登录Amazon,然后通过 https://console.amazonaws.cn/cloudtrail/
打开 CloudTrail 控制台。 -
在控制台右上角的导航栏中,选择美国东部(弗吉尼亚北部)区域。如果您选择其他区域,Amazon Organizations 不会在 Amazon EventBridge 配置设置中作为一个选项出现,CloudTrail 也不会捕获 Amazon Organizations 的相关信息。
-
在导航窗格中,选择 Trails(跟踪记录)。
-
选择创建跟踪。
-
对于 Trail name (跟踪名称),输入
My-Test-Trail
。 -
执行下列选项之一来指定 CloudTrail 将日志提交到的位置:
-
如果您需要创建存储桶,请选择 Create new S3 bucket(创建新 S3 存储桶),然后在 Trail log bucket and folder(跟踪日志存储桶和文件夹)中输入新存储桶的名称。
注意
S3 存储桶的名称必须是全球唯一的。
-
如果您已有一个存储桶,选择 Use existing S3 bucket(使用现有 S3 存储桶),然后从 S3 bucket(S3 存储桶)列表中选择存储桶名称。
-
-
选择下一步。
在 Choose log events(选择日志事件)页面的 Management events(管理事件)部分中,选择 Read(读取)和 Write(写入)。
-
选择下一步。
-
检查您的选择,然后选择 Create trail(创建跟踪)。
如果警报规则匹配传入的 API 调用,Amazon EventBridge 允许您选择多种不同的方式发送警报。本教程演示了两种方法:调用 Lambda 函数,该函数可记录 API 调用;向 Amazon SNS 主题发送信息,向该主题的订阅者发送电子邮件或短信。在接下来的两个步骤中,您将创建所需的组件:Lambda 函数和 Amazon SNS 主题。
步骤 2:配置 Lambda 函数
在本步骤中,您将创建记录 API 活动的 Lambda 函数,这些活动由您稍后配置的 Amazon EventBridge 规则发送给函数。
创建记录 Amazon EventBridge 事件的 Lambda 函数
-
从 Amazon Lambda 打开 https://console.amazonaws.cn/lambda/
控制台。 -
如果您是首次使用 Lambda,请在欢迎页面上选择 Get Started Now(立即开始使用);否则,选择 Create function(创建函数)。
-
在 Create function(创建函数)页面中,选择 Use a blueprint(使用蓝图)。
-
从 Blueprints (蓝图) 搜索框中,为筛选条件输入
hello
,然后选择 hello-world 蓝图。 -
选择 配置。
-
在 Basic information (基本信息) 页面上,执行以下操作:
-
对于 Lambda 函数名称,在 Name (名称) 文本框中输入
LogOrganizationEvents
。 -
对于 Role (角色),选择 Create a new role with basic Lambda permissions (创建具有基本 Lambda 权限的新角色)。此角色授予您的 Lambda 函数访问所需数据的权限和写入输出日志的权限。
-
-
编辑 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 字符串。 -
选择 Create function (创建函数)。
步骤 3:创建 Amazon SNS 主题,向订阅者发送电子邮件
在此步骤中,您将创建 Amazon SNS 主题,向订阅者发送电子邮件信息。请将该主题作为您稍后创建的 Amazon EventBridge 规则的“目标”。
创建 Amazon SNS 主题,向订阅者发送电子邮件
-
从 https://console.amazonaws.cn/sns/v3/
打开 Amazon SNS 控制台。 -
在导航窗格中,选择 Topics(主题)。
-
选择 创建新主题。
-
对于 Topic name (主题名称),输入
OrganizationsCloudWatchTopic
。 -
对于 Display name (显示名称),输入
OrgsCWEvnt
。 -
选择创建主题。
-
-
现在,您可以创建该主题的订阅。选择您刚刚创建的主题的 ARN。
-
选择创建订阅。
-
在 Create subscription (创建订阅) 页面上,为 Protocol (协议) 选择 Email (电子邮件)。
-
对于 Endpoint (终端节点),输入您的电子邮件地址。
-
选择 Create subscription (创建订阅)。Amazon 将向前一步中指定的电子邮件地址发送电子邮件。收到这封电子邮件后,选择电子邮件中的 Confirm subscription (确认订阅) 链接,验证您已成功接收到这封电子邮件。
-
返回控制台并刷新页面。Pending confirmation 消息消失,现已替换为有效的订阅 ID。
-
步骤 4:创建 Amazon EventBridge 规则
现在,您的账户中存在所需的 Lambda 函数,您可以创建 Amazon EventBridge 规则,在满足该规则的条件时调用该函数。
创建 EventBridge 规则
-
在 https://console.amazonaws.cn/events/
打开 Amazon EventBridge 控制台。 -
您必须将控制台设置为美国东部(弗吉尼亚州北部)区域,否则有关 Organizations 的信息不可用。在控制台右上角的导航栏中,选择美国东部(弗吉尼亚北部)区域。
有关创建规则的说明,请参阅 Amazon EventBridge 用户指南中的 Getting started with Amazon EventBridge(Amazon EventBridge 入门)。
步骤 5:测试您的 Amazon EventBridge 规则
在此步骤中,您将创建一个组织单元(OU),然后观察 Amazon EventBridge 规则,生成日志条目,并向您发送有关事件详细信息的电子邮件。
查看 EventBridge 日志条目
-
从 https://console.amazonaws.cn/cloudwatch/
打开 CloudWatch 控制台。 -
在导航窗格中,选择 Logs (日志)。
-
在 Log Groups (日志组) 下,选择与您的 Lambda 函数关联的组:/aws/lambda/LogOrganizationEvents。
-
每个组包含一个或多个流,应该有一个今天的组。选择该存储桶。
-
查看日志。您应该可以看到与以下内容类似的行:
-
选择条目中间的行,查看收到事件的完整 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" } }
-
检查您的电子邮件账户是否收到来自 OrgsCWEvnt 的邮件(您的 Amazon SNS 主题的显示名称)。电子邮件正文中包含与上一步所示的日志条目相同的 JSON 文本输出。
清理:删除您不再需要的资源
为避免产生费用,您应删除本教程要求您创建,而您也不希望保留的全部 Amazon 资源。
清理您的 Amazon 环境
-
使用 CloudTrail 控制台
删除您通过步骤 1 创建的、名为 My-Test-Trail
的跟踪。 -
如果您在步骤 1 中创建了 Amazon S3 存储桶,请使用 Amazon S3 控制台
将其删除。 -
使用 Lambda 控制台
删除您通过步骤 2 创建的、名为 LogOrganizationEvents
的函数。 -
使用 Amazon SNS 控制台
删除您通过步骤 3 创建的、名为 OrganizationsCloudWatchTopic
的 Amazon SNS 主题。 -
使用 CloudWatch 控制台
,删除您通过步骤 4 创建的名为 OrgsMonitorRule
的 EventBridge 规则。 -
使用 Organizations 控制台
删除您通过步骤 5 创建的、名为 TestCWEOU
的 OU。
就是这样。在本教程中,您配置了 EventBridge 来监控组织中的更改。您配置了一条规则,当用户调用特定 Amazon Organizations 操作时即触发该规则。该规则运行 Lambda 函数来记录事件,并发送包含该事件详细信息的电子邮件。