

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

# でのクエリベースのグループの作成 AWS Resource Groups
<a name="gettingstarted-query"></a>

## リソースグループクエリのタイプ
<a name="getting_started-query_types"></a>

では AWS Resource Groups、*クエリ*はクエリベースのグループの基盤です。リソースグループは、2 つのタイプのクエリのいずれかに基づくことができます。

 **タグベース**   
タグベースのクエリには、`AWS::{{service}}::{{resource}}` 形式で指定されているリソースタイプのリスト、およびタグが含まれます。*タグ*は、企業内のリソースを識別およびソートするのに役立ちます。タグには、キーの値が含まれます。  
タグベースのクエリの場合、グループのメンバーにするリソースによって共有されるタグも指定します。例えば、アプリケーションのテストステージを実行するために使用している Amazon EC2 インスタンスと Amazon S3 バケットをすべて含むリソースグループを作成しており、このようにタグ付けされたインスタンスとバケットがある場合は、ドロップダウンリストからリソースタイプ `AWS::EC2::Instance` および `AWS::S3::Bucket` を選択してから、タグ値 **Test** でタグキー **Stage** を指定します。  
タグベースのリソースグループの `ResourceQuery` パラメータの構文には、次の要素が含まれます。  
+  `Type` 

  この要素は、このリソースグループを定義するクエリの種類を示します。タグベースのリソースグループを作成するには、値 `TAG_FILTERS_1_0` を次のように指定します。

  ```
  "Type": "TAG_FILTERS_1_0"
  ```
+  `Query` 

   この要素は、リソースとの照合に使用される実際のクエリを定義します。これには、次の要素を持つ JSON 構造の文字列表現が含まれます。
  +  `ResourceTypeFilters` 

    この要素は、フィルターに一致するリソースタイプにのみ結果を制限します。次の値を指定できます。
    + `"AWS::AllSupported"` は、クエリに一致し、Resource Groups サービスで現在サポートされている任意のタイプのリソースを結果に含めることができることを指定します。
    + `"AWS::{{service-id}}::{{resource-type}}` — この形式のリソースタイプの指定文字列をカンマで区切ったリスト (`"AWS::EC2::Instance"` など)。
  +  `TagFilters` 

    この要素は、リソースにアタッチされたタグと比較されるキーと値の文字列のペアを指定します。フィルターに一致するタグキーと値を持つものがグループに含められます。各フィルターは、次の要素で構成されています。
    + `"Key"` - キー名を持つ文字列。キー名がフィルターと一致するタグを持つリソースのみがグループのメンバーになります。
    + `"Values"` - 指定したキーの値のカンマ区切りリストを含む文字列。一致するタグキーと、このリスト内の値と一致する値を持つリソースのみがグループのメンバーになります。
これらの JSON 要素はすべて、JSON 構造の 1 行の文字列表現に結合する必要があります。例えば、次の JSON 構造例を持つ `Query` について考えます。このクエリは、タグ「Stage」と値「Test」を持つ Amazon EC2 インスタンスのみを照合するためのものです。  

```
{
    "ResourceTypeFilters": [ "AWS::EC2::Instance" ],
    "TagFilters": [
        {
            "Key": "Stage",
            "Values": [ "Test" ]
        }
    ]
}
```
その JSON は、次の単一行の文字列として表現し、`Query` 要素の値として使用することができます。JSON 構造の値は二重引用符で囲まれた文字列でなければならないため、次に示すように、埋め込まれた二重引用符またはスラッシュ文字の前にそれぞれバックスラッシュを付けて、これらをエスケープする必要があります。  

```
"Query":"{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"TagFilters\":[{\"Key\":\"Stage\",\"Values\":[\"Test\"]}]}"
```
完成した `ResourceQuery` 文字列は、次に示すように CLI コマンドパラメータとして表されます。  

```
--resource-query '{"Type":"TAG_FILTERS_1_0","Query":"{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"TagFilters\":[{\"Key\":\"Stage\",\"Values\":[\"Test\"]}]}"}'
```

  **CloudFormation スタックベース**   
 CloudFormation スタックベースのクエリでは、現在のリージョンのアカウントで CloudFormation スタックを選択し、グループに含めるスタックでリソースタイプを選択します。クエリは 1 つの CloudFormation スタックにのみ基づくことができます。  
 CloudFormation スタックには、他の CloudFormation 「子」スタックを含めることができます。ただし、「親」スタックに基づくリソースグループは、子スタックのすべてのリソースをグループメンバーとして取得するわけではありません。リソースグループは、子スタックを親スタックのリソースグループに単一のグループメンバーとして追加し、拡張はしません。
Resource Groups は、次のいずれかのステータスの CloudFormation スタックに基づくクエリをサポートします。  
+ `CREATE_COMPLETE`
+ `CREATE_IN_PROGRESS`
+ `DELETE_FAILED`
+ `DELETE_IN_PROGRESS`
+ `REVIEW_IN_PROGRESS`
クエリでスタックの一部として直接作成されたリソースのみが、リソースグループに含まれます。 CloudFormation スタックのメンバーによって後で作成されたリソースは、 グループのメンバーにはなりません。たとえば、スタック CloudFormation の一部として によって Auto Scaling グループが作成された場合、その Auto Scaling グループは グループのメンバー***になります***。ただし、そのオペレーションの一部として自動スケーリンググループによって作成された Amazon EC2 インスタンス***は、スタックベースのリソースグループのメンバーではありません***。 CloudFormation 
 CloudFormation スタックに基づいてグループを作成し、スタックのステータスが などのグループクエリの基礎としてサポートされなくなったものに変更された場合`DELETE_COMPLETE`、リソースグループは引き続き存在しますが、メンバーリソースはありません。

リソースグループを作成したら、グループのリソースに対してタスクを実行できます。

CloudFormation スタックベースのリソースグループの `ResourceQuery` パラメータの構文には、次の要素が含まれます。
+  `Type` 

  この要素は、このリソースグループを定義するクエリの種類を示します。

   CloudFormation スタックベースのリソースグループを作成するには、`CLOUDFORMATION_STACK_1_0`次のように値 を指定します。

  ```
  "Type": "CLOUDFORMATION_STACK_1_0"
  ```
+  `Query` 

   この要素は、リソースとの照合に使用される実際のクエリを定義します。これには、次の要素を持つ JSON 構造の文字列表現が含まれます。
  +  `ResourceTypeFilters` 

    この要素は、フィルターに一致するリソースタイプにのみ結果を制限します。次の値を指定できます。
    + `"AWS::AllSupported"` - クエリに一致する任意のタイプのリソースを結果に含めることができることを指定します。
    + `"AWS::{{service-id}}::{{resource-type}}` - この形式のリソースタイプの指定文字列をカンマで区切ったリスト (`"AWS::EC2::Instance"` など)。
  +  `StackIdentifier` 

    この要素は、リソースをグループに含める CloudFormation スタックの Amazon リソースネーム (ARN) を指定します。

これらの JSON 要素はすべて、JSON 構造の 1 行の文字列表現に結合する必要があります。例えば、次の JSON 構造例を持つ `Query` について考えます。このクエリは、指定された CloudFormation スタックの一部である Amazon S3 バケットのみを照合することを目的としています。

```
{
    "ResourceTypeFilters": [ "AWS::S3::Bucket" ],
    "StackIdentifier": "arn:aws:cloudformation:us-west-2:123456789012:stack/{{MyCloudFormationStackName}}/fb0d5000-aba8-00e8-aa9e-50d5cEXAMPLE"
}
```

その JSON は、次の単一行の文字列として表現し、`Query` 要素の値として使用することができます。JSON 構造の値は二重引用符で囲まれた文字列でなければならないため、次に示すように、埋め込まれた二重引用符またはスラッシュ文字の前にそれぞれバックスラッシュを付けて、これらをエスケープする必要があります。

```
"Query":"{\"ResourceTypeFilters\":[\"AWS::S3::Bucket\"],\"StackIdentifier\":\"arn:aws:cloudformation:us-west-2:123456789012:stack\/{{MyCloudFormationStackName}}\/fb0d5000-aba8-00e8-aa9e-50d5cEXAMPLE\"
```

完成した `ResourceQuery` 文字列は、次に示すように CLI コマンドパラメータとして表されます。

```
--resource-query '{"Type":"CLOUDFORMATION_STACK_1_0","Query":"{\"ResourceTypeFilters\":[\"AWS::S3::Bucket\"],\"StackIdentifier\":\"arn:aws:cloudformation:us-west-2:123456789012:stack\/{{MyCloudFormationStackName}}\/fb0d5000-aba8-00e8-aa9e-50d5cEXAMPLE\"}'
```