

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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": {
        ...
    }
}
```

すべての Amazon EventBridge イベントに共通するフィールドの詳細については、「Amazon EventBridge ユーザーガイド」の「[Amazon EventBridge イベント](https://docs.aws.amazon.com//eventbridge/latest/userguide/aws-events.html)」を参照してください。Resource Groups 固有の詳細を以下の表で説明します。


| フィールド名 | タイプ | 説明 | 
| --- | --- | --- | 
| detail-type | 文字列 |  Resource Groups の場合、`detail-type` フィールドは常に以下のいずれかの値です。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/ARG/latest/userguide/monitor-groups-syntax.html)  | 
| source | String | Resource Groups の場合、この値は常に "aws.resource-groups" です。 | 
| resources | Amazon リソースネーム (ARN) 配列 |  このフィールドには常に、このイベントをトリガーした変更が加えられたグループの [Amazon リソースネーム (ARN)](https://docs.aws.amazon.com//general/latest/gr/aws-arns-and-namespaces.html) が含まれます。 このフィールドには、該当する場合、グループに追加またはグループから削除されたリソースの ARN も含めることができます。  | 
|  `detail`  | JSON オブジェクトの文字列 | これはイベントのペイロードです。detail フィールドの内容は、detail-type の値によって異なります。[詳細については、次のセクションを参照してください。](monitor-groups-syntax-detail.md) | 

# `detail` フィールドの構造
<a name="monitor-groups-syntax-detail"></a>

`detail` フィールドには、特定の変更に関する Resource Groups サービス固有の詳細がすべて含まれます。`detail` フィールドは、前のセクションで説明した `detail-type` フィールドの値に基づいて、グループ状態の変更とメンバーシップの変更の 2 つの形式のいずれかになります。

**重要**  
これらのイベントのリソースグループは、グループの ARN と [UUID](https://wikipedia.org/wiki/Universally_unique_identifier) を含む `"unique-id"` フィールドの組み合わせによって識別されます。リソースグループの 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` セクションに含まれる情報には、次の表で説明するフィールドが含まれます。


| フィールド名 | タイプ | 説明 | 
| --- | --- | --- | 
| event-sequence | Double | 特定のグループのイベントの順序を指定する、単調に増加する数値。この数値は、グループを削除して同じ名前で別のグループを作成するとリセットされます。 | 
| group | [[`Group`](#monitor-groups-syntax-detail-group-object) JSON オブジェクト] | ARN、名前、および固有 ID によってイベントに関連付けられているグループオブジェクト。 | 
| state-change | String | 発生した状態変更のタイプ。値は以下のいずれかです。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/ARG/latest/userguide/monitor-groups-syntax-detail.html) | 
| old-state  | [GroupState JSON オブジェクト] | 変更前のグループの状態。オブジェクトには変更されたプロパティの値のみが含まれます。 | 
|  `new-state`  | [GroupState JSON オブジェクト] | 変更後のグループの状態。オブジェクトには変更されたプロパティの値のみが含まれます。 | 

`group` JSON オブジェクトには、次の表に示す要素が含まれます。


| フィールド名 | タイプ | 説明 | 
| --- | --- | --- | 
| arn | 文字列 | グループの ARN。 | 
| name | String | グループのわかりやすい名前。 | 
| unique-id | GUID | 削除されたグループと、後で同じ名前と ARN で作成された別のグループを区別する固有の GUID 値。コード内でこれらのイベントを使用する際には、ARN とこの値を連結してグループの固有キーとして使用してください。 | 

`GroupState`JSON オブジェクトには、次の表に示す要素が含まれます。


| フィールド名 | タイプ | 説明 | 
| --- | --- | --- | 
| 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` フィールドの内容を示しています。

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

`"state-change": "create"` 

このイベントは、新しいグループが作成されたことを示しています。このイベントには、グループの作成時に設定されたすべてのグループメタデータプロパティが含まれます。通常、このイベントの後には、グループが空でない限り、1 つ以上のグループメンバーシップイベントが続きます。値が NULL のプロパティはイベント本文には表示されません。

次のイベント例は、`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\"}]
                }"
            }
        }
    }
}
```

### Delete
<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 と、グループに追加またはグループから削除されたすべてのリソースの ARN が含まれます。

この `detail-type` を指定すると `details` セクションに含まれる情報には、次の表で説明するフィールドが含まれます。


| フィールド名 | タイプ | 説明 | 
| --- | --- | --- | 
| event-sequence | Double | 単調に増加する数値で、特定のグループのイベントの順序を示します。グループが削除され、固有 ID が変更されると、数値はリセットされます。 | 
| group | [Group JSON オブジェクト] | イベントに関連付けられているグループオブジェクトを ARN、名前、および固有 ID で識別します。 | 
|  `resources`  | ResourceChange JSON オブジェクトの配列 |  グループメンバーシップが変更されたリソースの配列。 この `ResourceChange` オブジェクトには、リソースごとの以下のフィールドが含まれています。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/ARG/latest/userguide/monitor-groups-syntax-detail.html)  | 

次のコード例は、一般的なメンバーシップ変更タイプのイベントの内容を示しています。この例では、1 つのリソースをグループに追加し、1 つのリソースをグループから削除しています。

```
{
    "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 によって生成されたイベントを、特定のイベントルールとターゲットに関心のあるユーザーを対象としてフィルタリングします。

以下のコード例では、特定のグループまたはリソースが必要な場合、各*ユーザー入力プレースホルダー*をユーザー自身の情報に置き換えています。

すべての 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" ]
}
```

特定のリソースタイプのイベント  
プレフィックスマッチングと ARN を使用して、特定のリソースタイプのイベントを照合できます。  

```
{
    "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" ]
         }
     }
}
```