Amazon CloudWatch 事件
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

在 AWS 账户之间发送和接收事件

您可以设置您的 AWS 账户将事件发送到另一个 AWS 账户,或接收来自另一个账户的事件。如果两个账户属于同一个组织,或属于具有合作伙伴关系或类似关系的组织,这可能会很有用。

如果您将账户设置为发送或接收事件,则可以指定它向哪些 AWS 账户发送事件或从哪些账户接收事件。

整体过程如下所述:

  • 编辑接收方 的默认事件总线 上的接收方账户权限,以允许一个或多个指定的账户 (或所有 AWS 账户) 将事件发送到接收方账户。

  • 发送方 账户中,设置一个或多个将接收方账户的默认事件总线作为目标的规则。

  • 接收方 账户中,设置一个或多个匹配来自发送方账户的事件的规则。

从一个账户发送到另一个账户的事件将作为自定义事件向发送账户收取费用。不向接收账户收费。有关 CloudWatch Events 定价的更多信息,请参阅 Amazon CloudWatch 定价

接收方账户可以设置一条规则,将从发送方账户收到的事件发送到第三个账户,但是这些事件不会实际发送到该第三个账户。

允许您的账户从其他 AWS 账户接收事件

要接收其他账户的事件,您必须先编辑您账户的默认事件总线 上的权限。默认事件总线接受来自 AWS 服务、其他授权 AWS 账户和 PutEvents 调用的事件。

当您编辑默认事件总线的权限以向其他 AWS 账户授予权限时,可以按账户 ID 指定账户。或者您可以选择从所有 AWS 账户接收事件。

警告

如果您选择从所有 AWS 账户接收事件,请注意创建仅匹配要从其他账户接收的事件的规则。要创建更安全的规则,请确保每个规则的事件模式包含一个 account 字段,其中包含您要从其接收事件的一个或多个账户的账户 ID。其事件模式包含账户字段的规则将不匹配从其他账户发送的事件。有关更多信息,请参阅 事件和事件模式

使用控制台允许您的账户从其他 AWS 账户接收事件

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  2. 在导航窗格中,选择 Event Buses

  3. 选择 Add Permission

  4. 对于 Principal,键入您要从其接收事件的账户的 12 位数 AWS 账户 ID。或者,选择 Everybody(*) 以接收来自所有其他 AWS 账户的事件。

  5. 选择 Add

使用 AWS CLI 允许您的账户从其他 AWS 账户接收事件

  1. 要允许一个特定 AWS 账户发送事件,请运行以下命令:

    Copy
    aws events put-permission --action events:PutEvents --statement-id MySid --principal SenderAccountID

    要允许所有其他 AWS 账户发送事件,请运行以下命令:

    Copy
    aws events put-permission --action events:PutEvents --statement-id MySid --principal \*
  2. 为您的默认事件总线设置权限后,您可以选择使用 describe-event-bus 命令检查权限。

    Copy
    aws events describe-event-bus

将事件发送到另一个 AWS 账户

要将事件发送到另一个账户,可配置一个 CloudWatch Events 规则,该规则将另一个 AWS 账户的默认事件总线作为目标。该接收账户的默认事件总线也必须配置为从您的账户接收事件。

使用控制台从您的账户向另一个 AWS 账户发送事件

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  2. 在导航窗格中,选择 Events,然后选择 Create Rule

  3. 对于 Event Source,选择 Event Pattern,然后选择要发送至另一个账户的服务名称和事件类型。

  4. 选择 Add Target

  5. 在下拉列表中,选择 Event bus in another AWS account。然后在 Account ID 中,键入要向其发送事件的 AWS 账户的 12 位数账户 ID。

  6. 在页面底部,选择 Configure Details

  7. 键入规则的名称和描述,然后选择 Create Rule

使用 AWS CLI 将事件发送到另一个 AWS 账户

  1. 使用 put-rule 命令创建一条规则,此规则将匹配您要发送至其他账户的事件类型。

  2. 将其他账户的默认事件总线作为规则的目标添加:

    Copy
    aws events put-targets --rule NameOfRuleMatchingEventsToSend --targets "Id"="MyId","Arn"="arn:aws:events:region:$ReceiverAccountID:event-bus/default"

编写与来自另一个 AWS 账户的事件进行匹配的规则

如果您的账户设置为从其他 AWS 账户接收事件,则可以编写与那些事件进行匹配的规则。您只需要将规则的事件模式设置为与您从其他账户接收的事件进行匹配即可。

除非您在规则的事件模式中指定 Account,否则您账户中与您从其他账户收到的事件进行匹配的任何规则 (包括新规则和现有规则) 都将基于这些事件触发。如果您要从另一个账户接收事件,并且希望仅对从您自己的账户生成的事件模式触发规则,则必须添加 Account 并将您自己的账户 ID 指定为规则的事件模式。

如果您将您的 AWS 账户设置为接受来自所有 AWS 账户的事件,我们强烈建议您将 Account 添加到您账户的每一个 CloudWatch Events 规则中。这可以防止账户中的规则对来自未知 AWS 账户的事件触发。在规则中指定 Account 字段时,可以在该字段中指定多个 AWS 账户的账户 ID。

使用控制台编写与来自另一个账户的事件进行匹配的规则

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  2. 在导航窗格中,选择 Events,然后选择 Create Rule

  3. 对于 Event Source,选择 Event Pattern,然后选择您希望规则进行匹配的服务名称和事件类型。

  4. 选择 Event Pattern Preview 旁的 Edit

  5. 在编辑窗口中,添加一个 Account 行,指定发送此事件的 AWS 账户应与规则匹配。例如,如果编辑窗口最初显示:

    Copy
    { "source": [ "aws.ec2" ], "detail-type": [ "EBS Volume Notification" ] }

    您可以添加以下内容以使规则与 AWS 账户 123456789012 和 111122223333 发送的 EBS 卷通知进行匹配:

    Copy
    { "account": [ "123456789012","111122223333" ], "source": [ "aws.ec2" ], "detail-type": [ "EBS Volume Notification" ] }
  6. 编辑事件模式后,选择 Save

  7. 像往常一样完成规则的创建,在您的账户中设置一个或多个目标。

使用 AWS CLI 编写与来自另一个 AWS 账户的事件进行匹配的规则

  • 使用 put-rule 命令,并在规则事件模式的 Account 字段中指定规则要匹配的其他 AWS 账户。以下示例规则与 AWS 账户 123456789012 和 111122223333 中的 Amazon EC2 实例状态更改进行匹配:

    Copy
    aws events put-rule --name "EC2InstanceStateChanges" --event-pattern "{\"account\":["123456789012", "111122223333"],\"source\":[\"aws.ec2\"],\"detail-type\":[\"EC2 Instance State-change Notification\"]}" --role-arn "arn:aws:iam::123456789012:role/MyRoleForThisRule"