

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

# 组生命周期事件：监控资源组的更改
<a name="monitor-groups"></a>

使用 AWS Resource Groups 将资源组织成组后，您可以监视这些组中是否有作为*事件*向您公开的更改。您可以收到有关组活动的通知，以此作为您采取某种操作的信号。例如，您可以配置在组成员资格发生更改时发送的通知。您可以使用添加新组成员时发生的事件来触发 Lambda 函数，该函数以编程方式审查更改，以确保新的组成员符合组织设定的合规性要求。此类 Lambda 函数可以对任何未能满足这些要求的新组成员执行自动补救措施。因移除组成员而导致的事件可能会触发 Lambda 函数，该函数执行任何必要的清理，例如删除链接的资源。

通过为资源组开启群组生命周期事件，您可以允许 Amazon 捕获有关群组变更的事件， EventBridge 并将其提供给所有受 EventBridge 支持的目标服务。然后，您可以将这些目标服务配置为自动执行场景所需的任何操作。这些目标包括各种服务，例如亚马逊简单通知 AWS 服务 (Amazon SNS) Simple Notification Service、亚马逊简单队列服务 (Amazon SQS) Simple Queue Service 和。 AWS Lambda借助 Lambda 之类的服务，您的事件可以触发使用代码执行所需操作的*编程*响应。有关您可以定位的 AWS 服务列表 EventBridge，请参阅《[亚马逊* EventBridge 用户指南》中的亚马逊 EventBridge *目标](https://docs.aws.amazon.com//eventbridge/latest/userguide/eventbridge-targets.html)。

开启群组生命周期事件时， AWS Resource Groups 会创建以下项目：
+ 一个 AWS Identity and Access Management (IAM) 服务相关角色，有权监控您的资源标签是否有任何更改，并有权监控 CloudFormation 堆栈中资源的任何更改。
+ Resource Groups 托管 EventBridge 规则，用于捕获资源的任何标签或堆栈更改的详细信息。 EventBridge 使用此规则将这些更改通知资源组。然后，Resource Groups 会生成要发送的成员资格事件， EventBridge 供您的自定义规则处理。

服务关联角色*只能*由 Resource Groups 服务担任。有关 Resource Groups 为此功能使用的服务关联角色的更多信息，请参阅 [为 Resource Groups 使用服务相关角色](security_iam_service-linked-roles.md)。

开启此功能后，当您对资源组进行以下任何更改时，Resource Groups 会生成一个事件：
+ 创建新资源组。
+ 更新定义[基于查询的资源组](gettingstarted-query.md)成员资格的查询。
+ 更新[服务关联资源组](https://docs.aws.amazon.com//ARG/latest/APIReference/about-slg.html)的配置。
+ 更新资源组的描述。
+ 删除资源组。
+ 通过在资源组中添加或移除资源来更改资源组的成员资格。当标签更改或 CloudFormation 堆栈发生变化时，也可能发生成员资格变更。

**重要**  
要成功接收和响应群组事件，必须同时对 Resource Groups 和 EventBridge。您可以按任意顺序执行更改，但是在您对两个服务进行更改之前，不会将任何群组事件发布到 EventBridge 目标。
资源组的更改不包括对附加到资源组本身的任何标签的更改。要根据群组的标签更改生成事件，必须使用使用`aws.tag`源而不是来源的 EventBridge `aws.resource-groups`规则。有关更多信息，请参阅 *Amazon EventBridge 用户指南*中的[AWS 资源标签变更事件](https://docs.aws.amazon.com//eventbridge/latest/userguide/event-types.html#tag-event-types)。

**Topics**
+ [在 Resource Groups 中开启组生命周期事件](monitor-groups-turn-on.md)
+ [创建用于捕获群组生命周期事件和发布通知的 EventBridge 规则](monitor-groups-create-rule.md)
+ [关闭组生命周期事件](monitor-groups-turn-off.md)
+ [Resource Groups 生命周期事件的结构和语法](monitor-groups-syntax.md)

# 在 Resource Groups 中开启组生命周期事件
<a name="monitor-groups-turn-on"></a>

要接收有关资源组生命周期变更的通知，您可以开启组生命周期事件。然后，Resource Groups 会提供有关您的群组对亚马逊 EventBridge的更改的信息。在中 EventBridge，您可以使用您在[ EventBridge 服务中定义的规则](monitor-groups-create-rule.md)来评估变更并采取行动。

**最小权限**  
要在中开启群组生命周期事件 AWS 账户，您必须以具有以下权限的 AWS Identity and Access Management (IAM) 委托人身份登录：  
`resource-groups:UpdateAccountSettings`
`iam:CreateServiceLinkedRole`
`events:PutRule`
`events:PutTargets`
`events:DescribeRule`
`events:ListTargetsByRule`
`cloudformation:DescribeStacks`
`cloudformation:ListStackResources`
`tag:GetResources`

当您最初在中打开群组生命周期事件时 AWS 账户，Resource Groups 会创建一个[名为`AWSServiceRoleForResourceGroups`的服务相关角色](security_iam_service-linked-roles.md)。此托管角色有权使用 Resource Groups 托管 EventBridge 规则。该规则会监控附加到您资源的标签以及您账户中的 CloudFormation 堆栈是否有任何更改。然后，Resource Groups 将这些更改发布到亚马逊的默认事件总线 EventBridge。该服务还会创建名为的 EventBridge 托管规则`[Managed.ResourceGroups.TagChangeEvents](https://console.aws.amazon.com/events/home#/eventbus/default/rules/Managed.ResourceGroups.TagChangeEvents)`。此规则捕获您的资源标签更改的详细信息。这样，Resource Groups 就可以生成要发送的成员资格事件， EventBridge 供您的自定义规则处理。然后，您的 EventBridge 规则可以通过向规则的配置目标发送通知来响应事件。

完成这些步骤后，查找这些事件的规则应该会在几分钟后开始接收它们。

您可以使用 AWS 管理控制台 或 SDK 中的命令来开启群组生命周期事件 APIs。 AWS CLI 

**注意**  
如果您的资源组配额过高，则无法开启组生命周期事件。有关更多信息，请[查看查看服务配额](https://docs.aws.amazon.com/servicequotas/latest/userguide/gs-request-quota)。

------
#### [ AWS 管理控制台 ]

**在 Resource Groups 控制台中开启组生命周期事件**

1. 在 Resource Groups 控制台中打开**[设置](https://console.aws.amazon.com/resource-groups/groups/settings)**页面。

1. 在**组生命周期事件**部分中，选择**通知已关闭**旁边的开关。

1. 在确认对话框中，选择**开启通知**。

   功能开关显示**通知已开启**。

至此，该过程的第一部分完成。开启事件通知后，您可以[在 Amazon 中创建规则 EventBridge](monitor-groups-create-rule.md)，捕获事件并将其发送给特定机构 AWS 服务 进行处理。

------
#### [ AWS CLI ]

**要启用群组生命周期事件，请使用 AWS CLI 或 AWS SDKs**  
以下示例演示如何使用在 Resourc AWS CLI e Groups 中开启群组生命周期事件。输入带有服务主体参数的命令，如图所示。输出显示该功能的当前状态和所需状态。

```
$ aws resource-groups update-account-settings \
    --group-lifecycle-events-desired-status ACTIVE
{
    "AccountSettings": {
        "GroupLifecycleEventsDesiredStatus": "ACTIVE",
        "GroupLifecycleEventsStatus": "IN_PROGRESS"
    }
}
```

您可以通过运行以下示例命令来确认该功能已开启。当两个状态字段显示相同的值时，操作即告完成。

```
$ aws resource-groups get-account-settings
{
    "AccountSettings": {
        "GroupLifecycleEventsDesiredStatus": "ACTIVE",
        "GroupLifecycleEventsStatus": "ACTIVE"
    }
}
```

有关更多信息，请参阅以下资源：
+ AWS CLI [— aw [s 资源组 update-account-settings和 aws 资源组](https://docs.aws.amazon.com//cli/latest/reference/resource-groups/update-account-settings.html) get-account-settings](https://docs.aws.amazon.com//cli/latest/reference/resource-groups/get-account-settings.html)
+ API — [UpdateAccountSettings](https://docs.aws.amazon.com//ARG/latest/APIReference/API_UpdateAccountSettings.html)以及 [GetAccountSettings](https://docs.aws.amazon.com//ARG/latest/APIReference/API_GetAccountSettings.html)

------

# 创建用于捕获群组生命周期事件和发布通知的 EventBridge 规则
<a name="monitor-groups-create-rule"></a>

您可以在中[为资源组开启群组生命周期事件](monitor-groups-turn-on.md)，将事件发布 AWS Resource Groups 到 Amazon EventBridge。然后，您可以通过将这些事件发送给其他人进行进一步处理来创建响应这些事件 AWS 服务 的 EventBridge规则。

------
#### [ AWS CLI ]

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

1. [创建 EventBridge 规则以捕获您想要的事件](#monitor-cli-create-rule)

1. [将可以处理事件的目标附加到 EventBridge 规则](#monitor-cli-attach-target)

步骤 1：创建捕获事件的 EventBridge 规则  
以下 AWS CLI `[put-rule](https://docs.aws.amazon.com//cli/latest/reference/events/put-rule.html)`示例命令创建了一 EventBridge 条规则，用于捕获***所有*** Resource Groups 生命周期事件更改。  

```
$ aws events put-rule \
    --name "CatchAllResourceGroupEvents" \
    --event-pattern '{"source":["aws.resource-groups"]}'
{
    "RuleArn": "arn:aws:events:us-east-1:123456789012:rule/CatchAllResourceGroupEvents"
}
```
输出包含新规则的 Amazon 资源名称（ARN）。  
根据您使用的操作系统和 Shell，包含引用字符串的参数值具有不同的格式规则。对于本指南中的示例，我们展示了在 Linux BASH Shell 上运行的命令。有关为其他操作系统（例如 Windows 命令提示符）格式化带有嵌入式引号的字符串的说明，请参阅 *AWS Command Line Interface 用户指南*中的[在字符串中使用引号](https://docs.aws.amazon.com//cli/latest/userguide/cli-usage-parameters-quoting-strings.html#cli-usage-parameters-quoting-strings-containing)。  
随着参数字符串变得越来越复杂，[接受文本文件中的参数值](https://docs.aws.amazon.com//cli/latest/userguide/cli-usage-parameters-file.html)而不是直接在命令行中键入参数值会更容易，也更不容易出错。
以下事件模式将事件限制为仅与指定组相关的、由其 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:us-east-1:123456789012:rule/CatchResourceGroupEventsForMyGroup"
}
```
要捕获其他类型的 Resource Groups 事件，请将 `--event-pattern` 字符串替换为 [不同用例的 EventBridge 自定义事件模式示例](monitor-groups-example-eventbridge-filters.md) 部分中显示的筛选条件。

步骤 2：将可以处理事件的目标附加到 EventBridge 规则   
现在，您已经具有捕获感兴趣事件的规则，可以附加一个或多个目标来对事件进行某种类型的处理。  
以下 AWS CLI `[put-targets](https://docs.aws.amazon.com//cli/latest/reference/events/put-targets.html)`命令将`my-sns-topic`名为的亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 主题附加到您在上一个示例中创建的规则。当规则中指定的组发生更改时，该主题的所有订阅者都会收到通知。  

```
$ aws events put-targets \
    --rule CatchResourceGroupEventsForMyGroup \
    --targets Id=1,Arn=arn:aws:sns:us-east-1:123456789012:my-sns-topic
{
    "FailedEntryCount": 0,
    "FailedEntries": []
}
```
此时，任何与规则中的事件模式相匹配的组更改都将自动发送到已配置的一个或多个目标。如上例所示，如果目标是 Amazon SNS 主题，则该主题的所有订阅者都会收到一条包含该事件的消息，如 [Resource Groups 生命周期事件的结构和语法](monitor-groups-syntax.md) 中所述。

有关更多信息，请参阅以下资源：
+ AWS CLI — aws e [vents put-rule 和 aws 事件放](https://docs.aws.amazon.com//cli/latest/reference/events/put-rule.html)[置](https://docs.aws.amazon.com//cli/latest/reference/events/put-targets.html)目标
+ API — [PutRule](https://docs.aws.amazon.com//eventbridge/latest/APIReference/API_PutRule.html)以及 [PutTargets](https://docs.aws.amazon.com//eventbridge/latest/APIReference/API_PutTargets.html)

------

## 创建仅捕获特定组生命周期事件类型的规则
<a name="monitor-groups-create-rule-custom"></a>

您可以使用自定义事件模式创建规则，该模式仅捕获您感兴趣的事件。有关如何使用自定义事件模式筛选传入事件的完整详情，请参阅《[亚马逊* EventBridge 用户指南》中的 Amazon EventBridge * 事件](https://docs.aws.amazon.com//eventbridge/latest/userguide/eventbridge-and-event-patterns.html)。

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

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

该筛选条件仅捕获在指定字段中具有精确值的事件。有关可供您匹配的字段的完整列表，请参阅 [Resource Groups 生命周期事件的结构和语法](monitor-groups-syntax.md)。

# 关闭组生命周期事件
<a name="monitor-groups-turn-off"></a>

您可以关闭群组生命周期事件以停止 AWS Resource Groups 向 Amazon EventBridge 发送事件。为此，您可以使用或 SDK 中的命令 AWS 管理控制台 AWS CLI 或其中一个命令来执行此操作 APIs。

**注意**  
关闭群组生命周期事件会删除用于扫描资源标签和 CloudFormation 堆栈是否有更改的 Resource Groups 托管 EventBridge 规则。资源组（Resource Groups）无法再将这些更改传递给 EventBridge。您在中定义的任何查找 Resou EventBridge rce Groups 事件的规则都将停止接收要处理的事件。如果您打算将来再次开启组生命周期事件，则可以禁用您的规则。如果您不打算再次使用这些规则，则可以删除它们。有关更多信息，请参阅 *Amazon EventBridge 用户指南*中的[禁用或删除 EventBridge 规则](https://docs.aws.amazon.com//eventbridge/latest/userguide/delete-or-disable-rule.html)。  
关闭组生命周期事件***不会***删除服务关联角色。如果您希望使用 IAM，则可以[手动删除服务关联角色](security_iam_service-linked-roles.md#delete-service-linked-role)。如果您稍后需要再次开启组生命周期事件，而服务关联角色不存在，Resource Groups 会自动重新创建该角色。

**最小权限**  
要在当前版本中关闭群组生命周期事件 AWS 账户，您必须以具有以下权限的 AWS Identity and Access Management (IAM) 委托人身份登录：  
`resource-groups:UpdateAccountSettings`
`events:DeleteRule`
`events:RemoveTargets`
`events:DescribeRule`
`events:ListTargetsByRule`

------
#### [ AWS 管理控制台 ]

**要关闭群组生命周期事件通知 EventBridge**

1. 在 Resource Groups 控制台中打开**[设置](https://console.aws.amazon.com/resource-groups/groups/settings)**页面。

1. 在**组生命周期事件**部分中，选择**通知已开启**旁边的开关。

1. 在确认对话框中，选择**关闭通知**。

   将显示功能开关：**事件通知已关闭**。

此时，Resource Groups 不再向 EventBridge 默认事件总线发送事件，并且您不再接收要处理的群组通知事件的任何规则。您可以选择删除这些规则以完成清理。

------
#### [ AWS CLI ]

**要关闭群组生命周期事件通知 EventBridge**  
以下示例说明如何使用来关闭 Resour AWS CLI ce Groups 中的群组生命周期事件。

```
$ aws resource-groups update-account-settings \
    ----group-lifecycle-events-desired-status INACTIVE
{
    "AccountSettings": {
        "GroupLifecycleEventsDesiredStatus": "INACTIVE",
        "GroupLifecycleEventsStatus": "INACTIVE"
    }
}
```

------

有关更多信息，请参阅以下资源：
+ AWS CLI [— aw [s 资源组 update-account-settings和 aws 资源组](https://docs.aws.amazon.com//cli/latest/reference/resource-groups/update-account-settings.html) get-account-settings](https://docs.aws.amazon.com//cli/latest/reference/resource-groups/get-account-settings.html)
+ API — [UpdateAccountSettings](https://docs.aws.amazon.com//ARG/latest/APIReference/API_UpdateAccountSettings.html)以及 [GetAccountSettings](https://docs.aws.amazon.com//ARG/latest/APIReference/API_GetAccountSettings.html)

# Resource Groups 生命周期事件的结构和语法
<a name="monitor-groups-syntax"></a>

**Topics**
+ [`detail` 字段的结构](monitor-groups-syntax-detail.md)
+ [不同用例的 EventBridge 自定义事件模式示例](monitor-groups-example-eventbridge-filters.md)

的生命周期事件 AWS Resource Groups 采用 [JSON](https://json.org) 对象字符串的形式，一般格式如下。

```
{
    "version": "0",
    "id": "08f00e24-2e30-ec44-b824-8acddf1ac868",
    "detail-type": "ResourceGroups Group ... Change",
    "source": "aws.resource-groups",
    "account": "123456789012",
    "time": "2020-09-29T09:59:01Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:resource-groups:us-east-1:123456789012:group/MyGroupName"
    ],
    "detail": {
        ...
    }
}
```

有关所有亚马逊 EventBridge 事件的通用字段的详细信息，请参阅[亚马逊* EventBridge 用户指南中的亚马逊 EventBridge *事件](https://docs.aws.amazon.com//eventbridge/latest/userguide/aws-events.html)。下表说明了特定于 Resource Groups 的详细信息。


| 字段名称 | Type | 说明 | 
| --- | --- | --- | 
| detail-type | 字符串 |  对于 Resource Groups，`detail-type` 字段始终是以下值之一： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ARG/latest/userguide/monitor-groups-syntax.html)  | 
| source | 字符串 | 对于 Resource Groups，此值始终为 "aws.resource-groups"。 | 
| resources | 一组 Amazon 资源名称 (ARNs) |  此字段始终包含触发此事件的组的 [Amazon 资源名称（ARN）](https://docs.aws.amazon.com//general/latest/gr/aws-arns-and-namespaces.html)。 如果适用，此字段还可以包括添加到该 ARNs 组或从该组中移除的所有资源。  | 
|  `detail`  | JSON 对象字符串 | 这是事件的有效负载。detail 字段的内容根据 detail-type 的值而变化。[有关更多信息，请参见下一节。](monitor-groups-syntax-detail.md) | 

# `detail` 字段的结构
<a name="monitor-groups-syntax-detail"></a>

`detail` 字段包含有关特定更改的所有 Resource Groups 服务特定详细信息。根据上一节中描述的 `detail` 字段值，该 `detail-type` 字段可以采用两种形式之一，即组状态更改或成员资格更改。

**重要**  
这些事件中的资源组由组的 ARN 和包含 [UUID](https://wikipedia.org/wiki/Universally_unique_identifier) 的 `"unique-id"` 字段组合来标识。通过将 UUID 作为资源组身份的一部分，您可以区分已删除的组和以后使用相同名称创建的不同组。我们建议您将 ARN 和唯一 ID 的串联视为程序中与这些事件交互的组的键。

## 组状态更改
<a name="monitor-groups-syntax-detail-state-change"></a>

`"detail-type": "ResourceGroups Group State Change"`

此 `detail-type` 值表示组本身的状态（包括其元数据）已更改。此更改发生在创建、更新或删除组时，如 `detail` 中的 `"change"` 字段所示。

指定此 `detail-type` 时，`details` 部分中包含的信息包括下表中描述的字段。


| 字段名称 | Type | 说明 | 
| --- | --- | --- | 
| event-sequence | 双精度 | 一个单调递增的数字，用于指定特定组的事件顺序。当您删除该组并创建另一个同名的组时，该数字会重置。 | 
| group | [`Group`](#monitor-groups-syntax-detail-group-object) JSON 对象 | 按其 ARN、名称和唯一 ID 与事件关联的组对象。 | 
| state-change | 字符串 | 发生的状态更改类型。可以是以下任何值：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ARG/latest/userguide/monitor-groups-syntax-detail.html) | 
| old-state  | GroupState JSON 对象 | 更改前的组状态。该对象仅包含已更改的属性的值。 | 
|  `new-state`  | GroupState JSON 对象 | 更改后的组状态。该对象仅包含已更改的属性的值。 | 

`group` JSON 对象包含下表中描述的元素。


| 字段名称 | Type | 说明 | 
| --- | --- | --- | 
| arn | 字符串 | 组的 ARN。 | 
| name | 字符串 | 组的友好名称。 | 
| unique-id | GUID | 唯一的 GUID 值，用于区分已删除的组和后来使用相同名称和 ARN 创建的另一个组。在代码中使用这些事件时，使用 ARN 和此值的串联作为该组的唯一键。 | 

`GroupState` JSON 对象包含下表中描述的元素。


| 字段名称 | Type | 说明 | 
| --- | --- | --- | 
| description | 字符串 | 资源组的客户提供描述。 | 
| resource-query | ResourceQuery JSON 对象 | 定义组成员的查询的 JSON 表示形式。此字段仅适用于基于查询的组。此字段的语法由 [ResourceQuery API 数据类型](https://docs.aws.amazon.com//organizations/latest/APIReference/API_ResourceQuery.html)定义。[创建](#monitor-groups-syntax-detail-state-change-create)和[更新](#monitor-groups-syntax-detail-state-change-update)事件示例中包含了这方面的示例。 | 
| group-configuration | Configuration JSON 对象 | 与服务关联组关联的配置参数的 JSON 表示形式。有关更多信息，请参阅 AWS Resource Groups API 参考中的[保存资源组的配置](https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html)。 | 

以下每个代码示例说明了每种 `state-change` 类型的 `detail` 字段内容。

### Create
<a name="monitor-groups-syntax-detail-state-change-create"></a>

`"state-change": "create"` 

该事件表示新组已创建。该事件包含组创建期间设置的所有组元数据属性。除非组为空，否则此事件之后通常会有一个或多个组成员资格事件。具有空值的属性不会显示在事件正文中。

以下示例事件表示名为 `my-service-group` 的新建资源组。在此示例中，该组使用一个基于标签查询，其仅匹配具有标签 `"project"="my-service"` 的 Amazon Elastic Compute Cloud（Amazon EC2）实例。

```
{
    "version": "0",
    "id": "08f00e24-2e30-ec44-b824-8acddf1ac868",
    "detail-type": "ResourceGroups Group State Change",
    "source": "aws.resource-groups",
    "account": "123456789012",
    "time": "2020-09-29T09:59:01Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:resource-groups:us-east-1:123456789012:group/my-service-group"
    ],
    "detail": {
        "event-sequence": 1.0,
        "state-change": "create", 
        "group": {
            "arn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-service-group",
            "name": "my-service-group",
            "unique-id": "3dd07ab7-3228-4410-8cdc-6c4a10fcceea"
        },        
        "new-state": {
            "resource-query": {
                "type": "TAG_FILTERS_1_0",
                "query": "{
                    \"ResourceTypeFilters\": [\"AWS::EC2::Instance\"],
                    \"TagFilters\": [{\"Key\":\"project\", \"Values\":[\"my-service\"}]
                }"
            }
        }
    }
}
```

### 更新
<a name="monitor-groups-syntax-detail-state-change-update"></a>

`"state-change": "update"`

该事件表示现有组已按某种方式修改。该事件仅包含从先前状态更改的属性。未更改的属性不会显示在事件正文中。

以下示例事件表明，上一个示例的资源组中基于标签的查询已被修改，将该组中的 Amazon EC2 卷资源也包括在内。

```
{
    "version": "0",
    "id": "08f00e24-2e30-ec44-b824-8acddf1ac868",
    "detail-type": "ResourceGroups Group State Change",
    "source": "aws.resource-groups",
    "account": "123456789012",
    "time": "2020-09-29T09:59:01Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:resource-groups:us-east-1:123456789012:group/my-service-group"
    ],
    "detail": {
        "event-sequence": 3.0,
        "state-change": "update",
        "group": {
            "arn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-service-group",
            "name": "my-service",
            "unique-id": "3dd07ab7-3228-4410-8cdc-6c4a10fcceea"
        },        
        "new-state": {
            "resource-query": {
                "type": "TAG_FILTERS_1_0",
                "query": "{
                    \"ResourceTypeFilters\": [\"AWS::EC2::Instance\", \"AWS::EC2::Volume\"],
                    \"TagFilters\": [{\"Key\":\"project\", \"Values\":[\"my-service\"}]
                }"
            }
        },
        "old-state": {
            "resource-query": {
                "type": "TAG_FILTERS_1_0",
                "query": "{
                    \"ResourceTypeFilters\": [\"AWS::EC2::Instance\"],
                    \"TagFilters\": [{\"Key\":\"Project\", \"Values\":[\"my-service\"}]
                }"
            }
        }
    }
}
```

### 删除
<a name="monitor-groups-syntax-detail-state-change-delete"></a>

`"state-change": "delete"`

该事件表示现有组已被删除。除了组标识外，详细信息字段不包含关于组的元数据。该 `event-sequence` 字段将在此事件之后重置，因为根据定义，它是此 `arn` 和 `unique-id` 的最后一个事件。

```
{
    "version": "0",
    "id": "08f00e24-2e30-ec44-b824-8acddf1ac868",
    "detail-type": "ResourceGroups Group State Change",
    "source": "aws.resource-groups",
    "account": "123456789012",
    "time": "2020-09-29T09:59:01Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:resource-groups:us-east-1:123456789012:group/my-service"
    ],
    "detail": {
        "event-sequence": 4.0,   
        "state-change": "delete",
        "group": {
            "arn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-service",
            "name": "my-service",
            "unique-id": "3dd07ab7-3228-4410-8cdc-6c4a10fcceea"
        }
    }
}
```

## 组成员资格更改
<a name="monitor-groups-syntax-detail-membership-change"></a>

`"detail-type": "ResourceGroups Group Membership Change"`

此 `detail-type` 值表示该组的成员资格因向该组添加资源或从组中移除资源而更改。指定此`detail-type`值后，顶级`resources`字段将包括成员资格已更改的群组的 ARN 以及向该 ARNs 组中添加或移除的所有资源的 ARN。

指定此 `detail-type` 时，`details` 部分中包含的信息包括下表中描述的字段。


| 字段名称 | Type | 说明 | 
| --- | --- | --- | 
| event-sequence | 双精度 | 一个单调递增的数字，表示特定组的事件顺序。当组被删除且其唯一 ID 更改时，该数字会重置。 | 
| group | Group JSON 对象 | 通过 ARN、名称和唯一 ID 标识与事件关联的组对象。 | 
|  `resources`  | ResourceChange JSON 对象数组 |  组成员资格已更改的资源数组。 此 `ResourceChange` 对象包含每个资源的以下字段： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ARG/latest/userguide/monitor-groups-syntax-detail.html)  | 

以下代码示例说明了典型成员资格更改类型的事件内容。此示例显示正在向组中添加一个资源，以及从该组中移除一个资源。

```
{
    "version": "0",
    "id": "08f00e24-2e30-ec44-b824-8acddf1ac868",
    "detail-type": "ResourceGroups Group Membership Change",
    "source": "aws.resource-groups",
    "account": "123456789012",
    "time": "2020-09-29T09:59:01Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:resource-groups:us-east-1:123456789012:group/my-service",
        "arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111",
        "arn:aws:ec2:us-east-1:123456789012:instance/i-efef2222"
    ],
    "detail": {
        "event-sequence": 2.0,
        "group": {
            "arn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-service",
            "name": "my-service",
            "unique-id": "3dd07ab7-3228-4410-8cdc-6c4a10fcceea"
        },
        "resources": [
            {
                "membership-change": "add",
                "arn": "arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111",
                "resource-type": "AWS::EC2::Instance"
            },
            {
                "membership-change": "remove",
                "arn": "arn:aws:ec2:us-east-1:123456789012:instance/i-efef2222",
                "resource-type": "AWS::EC2::Instance"
            }
        ]
    }
}
```

# 不同用例的 EventBridge 自定义事件模式示例
<a name="monitor-groups-example-eventbridge-filters"></a>

以下示例 EventBridge 自定义事件模式会筛选由 Resource Groups 生成的事件，仅显示您对特定事件规则和目标感兴趣的事件。

在以下代码示例中，如果需要特定的组或资源，请将每个*user input placeholder*组或资源替换为您自己的信息。

所有 Resource Groups 事件  

```
{
    "source": [ "aws.resource-groups" ]
}
```

组状态或成员资格更改事件  
以下代码示例适用于所有组*状态*更改。  

```
{
    "source": [ "aws.resource-groups" ],
    "detail-type": [ "ResourceGroups Group State Change " ]
}
```
以下代码示例适用于所有组*成员资格*更改。  

```
{
    "source": [ "aws.resource-groups" ],
    "detail-type": [ "ResourceGroups Group Membership Change" ]
}
```

特定组的事件  

```
{
    "source": [ "aws.resource-groups" ],
    "detail": {
        "group": {
            "arn": [ "my-group-arn" ]
        }
    }
}
```
前面的示例捕获了对指定组的更改。以下示例执行相同的操作，并且还会捕获该组是另一个组的成员资源时的更改。  

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

特定资源的事件  
您只能筛选特定成员资源的组成员资格更改事件。  

```
{
    "source": [ "aws.resource-groups" ],
    "detail-type": [ "ResourceGroups Group Membership Change " ],
    "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-b188560f" ]
}
```

特定资源类型的事件  
您可以使用前缀匹配 ARNs 来匹配特定资源类型的事件。  

```
{
    "source": [ "aws.resource-groups" ],
    "resources": [
        { "prefix": "arn:aws:ec2:us-east-1:123456789012:instance" } 
    ]
}
```
或者，您可以通过使用 `resource-type` 标识符来使用精确匹配，从而可以简洁地匹配多个类型。与前面的示例不同，以下示例仅匹配组成员资格更改事件，因为组状态更改事件的 `detail` 字段中不包含字段 `resources`。  

```
{
    "source": [ "aws.resource-groups" ],
    "detail": {
        "resources": {
                "resource-type": [ "AWS::EC2::Instance", "AWS::EC2::Volume" ]
         }
    }
}
```

所有资源移除事件  

```
{
    "source": [ "aws.resource-groups" ],
    "detail-type": [ "ResourceGroups Group Membership Change" ],
    "detail": {
        "resources": {
                "membership-change": [ "remove" ]
        }
    }
}
```

特定资源的所有资源移除事件  

```
 {
    "source": [ "aws.resource-groups" ],
    "detail-type": [ "ResourceGroups Group Membership Change" ],
    "detail": {
        "resources": {
                "membership-change": [ "remove" ],
                "arn": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-b188560f" ]
         }
    }
}
```
您不能使用本节第一个示例中使用的**顶级** `resources` 数组进行此类事件筛选。这是因为顶级 `resources` 元素中的资源可能是添加到组中的资源，并且该事件仍然会匹配。换句话说，以下代码示例可能会返回意外事件。相反，请使用上一个示例中显示的语法。  

```
{
    "source": [ "aws.resource-groups" ],
    "detail-type": [ "ResourceGroups Group Membership Change" ],
    "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-b188560f" ],
    "detail": {
        "resources": {
                "membership-change": [ "remove" ]
         }
     }
}
```