亚马逊AWS官方博客

新增 – CloudWatch Events 的跨账户传送功能

CloudWatch Events 让您能够跟踪和响应 AWS 资源中的更改。您可以获得几乎实时的事件流,并使用规则将其路由到一个或多个目标 (AWS Lambda 函数、Amazon Kinesis 流、Amazon SNS 主题等)。生成的事件取决于特定的 AWS 服务。例如,以下是为 EC2 实例生成的事件:

或者,对于 S3 (必须启用 CloudTrail 才能创建使用这些事件的规则):

请参见 CloudWatch 事件类型列表,以查看有哪些服务和事件可用。

新的跨账户事件传送客户要求我们扩展 CloudWatch Events,以处理跨多个 AWS 账户的一些有趣且强大的使用案例,我们也很乐意满足这些要求。今天,我们将添加对 CloudWatch Events 的受控、跨账户传送的支持。如您所见,现在您可以安排将事件从一个 AWS 账户路由到另一个账户。与现有的事件传送模式一样,您可以使用 CloudWatch Events 规则来指定要将哪些事件发送到另一个账户。

以下是客户与我们分享的一些使用案例:

隔离问题 – 客户希望在单独的账户中处理和响应事件,以实施高级安全方案。

汇总 – 客户正在使用 AWS Organizations,并希望在整个组织范围内跨多个 AWS 账户跟踪某些类型的事件。

每个 AWS 账户都使用资源事件总线来分发事件。该对象可追溯到 CloudWatch Events 的引入,但从未这样被正式地称呼过。AWS 服务、PutEvents 函数和其他账户可以向该对象发布事件。

事件总线 (目前每个账户一个,计划将来允许一个账户有更多事件总线) 现在有一个关联的访问策略。该策略指定允许向总线发送事件的一组 AWS 账户。您可以添加一个或多个账户,也可以指定允许任何账户发送事件。

您可以创建基于扇入或扇出模式工作的事件分发拓扑。扇入模式允许您在一个位置处理来自多个账户的事件。扇出模式允许您将不同类型的事件路由到不同的位置和账户。

为了避免形成循环的可能性,从一个账户发送到另一个账户的事件将不会发送到第三个账户。在计划跨账户实施时,应该考虑到这一点。

使用跨账户事件传送为了测试此新功能,我利用了我的工作和个人 AWS 账户。我登录到个人账户并转到 CloudWatch 控制台。然后,我选择 Event Buses,单击 Add Permission,并输入我的工作账户的账户 ID:

我可以在一个位置看到我的所有总线 (目前只允许一个总线) 和权限:

接下来,我登录到我的工作账户,并创建一条规则,以便将事件发送到我的个人账户中的事件总线。在本例中,我的个人账户对我的工作账户中运行的 EC2 实例的状态更改感兴趣:

回到我的个人账户,我创建一条将针对任何 EC2 事件触发的规则,并将其目标设置为配置为发送电子邮件的 SNS 主题:

对我的个人账户中启动的 EC2 实例测试此规则后,我将在我的工作账户中启动一个实例并等待电子邮件消息:

消息中的账户和资源字段来自源 (工作) 账户。

须知事项

此功能在所有提供 CloudWatch Events 的 AWS 区域均可用,您可以立即开始使用它。也可以从 CloudWatch Events APIAWS Command Line Interface(CLI) 访问此功能。从一个账户转发到另一个账户的事件被视为自定义事件。发送账户每发送一百万个事件需支付 1 USD (有关更多信息,请参阅 CloudWatch 定价)。

-Jeff

PS – AWS CloudFormation 支持正在准备阶段,即将推出!