View a markdown version of this page

创建 EventBridge 规则以捕获群组生命周期事件和发布通知 - Amazon Resource Groups
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建 EventBridge 规则以捕获群组生命周期事件和发布通知

注意

Amazon 的群组生命周期事件 (GLE) 功能不再向新客户开放。 Amazon Resource Groups 有关与群组生命周期事件 (GLE) 类似的功能,请参阅推荐的 EventBridge-based 替代方案。有关更多信息,请参阅 的群组生命周期事件功能 Amazon Resource Groups  可用性变更

您可以在中为资源组启用群组生命周期事件 Amazon Resource Groups ,以向亚马逊发布事件 EventBridge。然后,您可以创建 EventBridge规则,通过将这些事件发送给其他人 Amazon Web Services 服务 进行进一步处理来响应这些事件。

Amazon CLI

在中创建规则以捕 EventBridge 获事件并将其发送到所需的目标服务的过程需要两个单独的 CLI 命令:

步骤 1:创建捕获事件的 EventBridge 规则

以下 Amazon CLI put-rule示例命令创建了一 EventBridge 条捕获所有资源组生命周期事件变更的规则。

$ aws events put-rule \ --name "CatchAllResourceGroupEvents" \ --event-pattern '{"source":["aws.resource-groups"]}' { "RuleArn": "arn:aws:events:cn-north-1:123456789012:rule/CatchAllResourceGroupEvents" }

输出包含新规则的 Amazon 资源名称(ARN)。

注意

根据您使用的操作系统和 Shell,包含引用字符串的参数值具有不同的格式规则。对于本指南中的示例,我们展示了在 Linux BASH Shell 上运行的命令。有关为其他操作系统(例如 Windows 命令提示符)格式化带有嵌入式引号的字符串的说明,请参阅 Amazon Command Line Interface 用户指南中的在字符串中使用引号

随着参数字符串变得越来越复杂,接受文本文件中的参数值而不是直接在命令行中键入参数值会更容易,也更不容易出错。

以下事件模式将事件限制为仅与指定组相关的、由其 ARN 标识的事件。此事件模式是一个复杂的 JSON 字符串,当压缩成单行、正确转义的 JSON 字符串时,其可读性要低得多。您可以改为将其存储在文件中。

将事件模式 JSON 字符串存储在文件中。在下面的代码示例中,文件为 eventpattern.txt

{ "source": [ "aws.resource-groups" ], "detail": { "group": { "arn": [ "my-resource-group-arn" ] } } }

然后,发出以下命令来创建规则,并且从文件中检索自定义事件模式。

$ aws events put-rule \ --name "CatchResourceGroupEventsForMyGroup" \ --event-pattern file://eventpattern.txt { "RuleArn": "arn:aws:events:cn-north-1:123456789012:rule/CatchResourceGroupEventsForMyGroup" }

要捕获其他类型的 Resource Groups 事件,请将 --event-pattern 字符串替换为 不同用例的 EventBridge 自定义事件模式示例 部分中显示的筛选条件。

步骤 2:将可以处理事件的目标附加到 EventBridge 规则

现在,您已经具有捕获感兴趣事件的规则,可以附加一个或多个目标来对事件进行某种类型的处理。

以下 Amazon CLI put-targets命令将一个名为的亚马逊简单通知服务 (Amazon SNS) 主题附加my-sns-topic到您在前面的示例中创建的规则。当规则中指定的组发生更改时,该主题的所有订阅者都会收到通知。

$ aws events put-targets \ --rule CatchResourceGroupEventsForMyGroup \ --targets Id=1,Arn=arn:aws:sns:cn-north-1:123456789012:my-sns-topic { "FailedEntryCount": 0, "FailedEntries": [] }

此时,任何与规则中的事件模式相匹配的组更改都将自动发送到已配置的一个或多个目标。如上例所示,如果目标是 Amazon SNS 主题,则该主题的所有订阅者都会收到一条包含该事件的消息,如 Resource Groups 生命周期事件的结构和语法 中所述。

有关更多信息,请参阅以下资源:

创建仅捕获特定组生命周期事件类型的规则

您可以使用自定义事件模式创建规则,该模式仅捕获您感兴趣的事件。有关如何使用自定义事件模式筛选传入事件的完整详细信息,请参阅亚马逊 EventBridge 用户指南中的亚马逊 EventBridge 事件

例如,假设您希望规则仅处理指示创建新资源组的 Resource Groups 通知。您可以使用类似于以下示例的自定义事件模式。

{ "source": [ "aws.resource-groups" ], "detail-type": [ "ResourceGroups Group State Change" ], "detail": { "state-change": "create" } }

该筛选条件仅捕获在指定字段中具有精确值的事件。有关可供您匹配的字段的完整列表,请参阅 Resource Groups 生命周期事件的结构和语法