

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

# でのクエリベースのグループの作成 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\"}'
```

# タグベースのクエリを構築し、グループを作成する
<a name="gettingstarted-query-tag-based"></a>

以下の手順では、タグベースのクエリを作成し、それを使用してリソースグループを作成する方法を示しています。

------
#### [ Console ]

1. [AWS Resource Groups コンソール](https://console.aws.amazon.com/resource-groups) にサインインします。

1. ナビゲーションペインで、**[[Create Resource Group]](https://console.aws.amazon.com/resource-groups/groups/new)** (リソースグループの作成) を選択します。

1. **[クエリベースのグループの作成]** ページの **[グループタイプ]** で、**[タグベース]** グループタイプを選択します。

1. **[Grouping criteria]** (グループ分けの条件) ページで、リソースグループに必要なリソースタイプを選択します。1 つのクエリに最大 20 のリソースタイプを設定できます。このウォークスルーでは、[**AWS::EC2::Instance**] および [**AWS::S3::Bucket**] を選択します。

1. まだ **[Grouping criteria]** (グループ分けの条件) ページで、**[Tags]** (タグ) に、タグキーまたはタグのキーと値のペアを指定して、指定された値でタグ付けされたもののみを含めるように一致するリソースを制限します。タグ付けが完了したら、**追加** を選択するか、**Enter** キーを押します。この例では、**ステージ** のタグキーを含むリソースをフィルタリングします。タグ値はオプションですが、クエリの結果を絞り込むことができます。タグ値の間に `OR` 演算子を追加して、タグキーに複数の値を追加することができます。さらにタグを追加するには、**追加** を選択します。クエリは `AND` 演算子をタグに割り当てます。そのため、クエリによって、指定されたリソースタイプおよび指定されたすべてのタグと一致するすべてのリソースが返ります。

1. さらに **[Grouping criteria]** (グループ分けの条件) ページで、**[Preview group resources]** (リソースグループのプレビュー) を選択すると、指定されたタグキーまたはキーに一致する、アカウント内の EC2 インスタンスおよび S3 バケットのリストが返されます。

1. 必要な結果が得られたら、このクエリに基づいてグループを作成します。

   1. **[Group details]** (グループの詳細) で、**[Group name]** (グループ名) に、リソースグループの名前を入力します。

      リソースグループ名は、文字、数字、ハイフン、ピリオド、アンダースコアを含む最大 128 文字で構成されます。名前の先頭を `AWS` または `aws` にすることはできません。これらは予約されています。リソースグループ名は、アカウントの現在のリージョンで一意である必要があります。

   1. (オプション) [**グループの説明**] に、グループの説明を入力します。

   1. (オプション) [**グループタグ**] で、リソースグループにのみ適用するタグキーと値のペアを追加します。グループのメンバーリソースは追加しません。

      グループタグは、このグループを大規模なグループのメンバーにする場合に便利です。グループを作成するには少なくとも 1 つのタグキーを指定する必要があるため、[**Group tags (グループタグ)**] にタグキーを追加して、大規模なグループにネストする予定のグループにタグキーを 1 つ以上追加してください。

1. 完了したら、**[Create group]** (グループの作成) を選択します。

------
#### [ AWS CLI & AWS SDKs ]

タグベースのグループは、タイプ `TAG_FILTERS_1_0` のクエリに基づいています。

1.  AWS CLI セッションで、次のように入力し、**Enter **キーを押して、グループ名、説明、リソースタイプ、タグキー、タグ値の値を独自の値に置き換えます。説明には、文字、数字、ハイフン、アンダースコア、句読点、空白文字を含め、最大で 512 文字使用できます。1 つのクエリに最大 20 のリソースタイプを設定できます。リソースグループ名は、文字、数字、ハイフン、ピリオド、アンダースコアを含む最大 128 文字で構成されます。名前の先頭を `AWS` または `aws` にすることはできません。これらは予約されています。リソースグループ名は、アカウントで一意である必要があります。

   `ResourceTypeFilters` に少なくとも 1 つの値が必要です。すべてのリソースタイプを指定するには、`ResourceTypeFilters` 値として `AWS::AllSupported` を使用します。

   ```
   $ aws resource-groups create-group \
       --name resource-group-name \
       --resource-query '{"Type":"TAG_FILTERS_1_0","Query":"{\"ResourceTypeFilters\":[\"resource_type1\",\"resource_type2\"],\"TagFilters\":[{\"Key\":\"Key1\",\"Values\":[\"Value1\",\"Value2\"]},{\"Key\":\"Key2\",\"Values\":[\"Value1\",\"Value2\"]}]}"}'
   ```

   コマンドの例を次に示します。

   ```
   $ aws resource-groups create-group \
       --name my-resource-group \
       --resource-query '{"Type":"TAG_FILTERS_1_0","Query":"{\"ResourceTypeFilters\":[\"AWS::EC2::Instance\"],\"TagFilters\":[{\"Key\":\"Stage\",\"Values\":[\"Test\"]}]}"}'
   ```

   次のコマンドでは、サポートされているすべてのリソースタイプが含まれている例です。

   ```
   $ aws resource-groups create-group \
       --name my-resource-group \
       --resource-query '{"Type":"TAG_FILTERS_1_0","Query":"{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"TagFilters\":[{\"Key\":\"Stage\",\"Values\":[\"Test\"]}]}"}'
   ```

1. このコマンドのレスポンスで返る内容は次のとおりです。
   + 作成したグループの詳細な説明。
   + グループの作成に使用したリソースクエリ。
   + グループに関連付けられているタグ。

------

# CloudFormation スタックベースのグループを作成する
<a name="gettingstarted-query-stack-based"></a>

以下の手順では、スタックベースのクエリを作成し、それを使用してリソースグループを作成する方法を示しています。

------
#### [ Console ]

1. [AWS Resource Groups コンソール](https://console.aws.amazon.com/resource-groups) にサインインします。

1. ナビゲーションペインで、**[[Create Resource Group]](https://console.aws.amazon.com/resource-groups/groups/new)** (リソースグループの作成) を選択します。

1. **[クエリベースのグループの作成]** の **[グループタイプ]** で、**[CloudFormation スタックベース]** グループタイプを選択します。

1. グループの基盤にするスタックを選択します。リソースグループは、1 つのスタックにのみ基づくことができます。スタックのリストをフィルタリングするには、スタックの名前の入力を開始します。サポートされているステータスのスタックのみがリストに表示されます。

1. グループに含めるスタックでリソースタイプを選択します。この演習では、デフォルトの [**All supported resource types (サポートされているすべてのリソースタイプ)**] のままにしておきます。サポートされていて、グループに含めることができるリソースタイプの詳細については、「[AWS Resource Groups およびタグエディタで使用できるリソースタイプ](supported-resources.md)」を参照してください。

1. **グループリソースの表示**を選択して、選択したリソースタイプに一致する CloudFormation スタック内のリソースのリストを返します。

1. 必要な結果が得られたら、このクエリに基づいてグループを作成します。

   1. **[Group details]** (グループの詳細) で、**[Group name]** (グループ名) に、リソースグループの名前を入力します。

      リソースグループ名は、文字、数字、ハイフン、ピリオド、アンダースコアを含む最大 128 文字で構成されます。名前の先頭を `AWS` または `aws` にすることはできません。これらは予約されています。リソースグループ名は、アカウントの現在のリージョンで一意である必要があります。

   1. (オプション) [**グループの説明**] に、グループの説明を入力します。

   1. (オプション) [**グループタグ**] で、リソースグループにのみ適用するタグキーと値のペアを追加します。グループのメンバーリソースは追加しません。

      グループタグは、このグループを大規模なグループのメンバーにする場合に便利です。グループを作成するには少なくとも 1 つのタグキーを指定する必要があるため、[**Group tags (グループタグ)**] にタグキーを追加して、大規模なグループにネストする予定のグループにタグキーを 1 つ以上追加してください。

1. 完了したら、**[Create group]** (グループの作成) を選択します。

------
#### [ AWS CLI & AWS SDKs ]

 CloudFormation スタックベースのグループは、 型のクエリに基づいています`CLOUDFORMATION_STACK_1_0`。

1. グループ名の値、説明、スタック識別子、リソースタイプを独自に設定した内容に置き換えて、次のコマンドを実行します。説明には、文字、数字、ハイフン、アンダースコア、句読点、空白文字を含め、最大で 512 文字使用できます。

   リソースタイプを指定しない場合、Resource Groups にはスタックでサポートされるすべてのリソースタイプが含まれます。1 つのクエリに最大 20 のリソースタイプを設定できます。リソースグループ名は、文字、数字、ハイフン、ピリオド、アンダースコアを含む最大 128 文字で構成されます。名前の先頭を `AWS` または `aws` にすることはできません。これらは予約されています。リソースグループ名は、アカウントで一意である必要があります。

   コマンド例に示すように、*stack\$1identifier* は、スタック ARN です。

   ```
   $ aws resource-groups create-group \
       --name group_name \
       --description "description" \
       --resource-query '{"Type":"CLOUDFORMATION_STACK_1_0","Query":"{\"StackIdentifier\":\"stack_identifier\",\"ResourceTypeFilters\":[\"resource_type1\",\"resource_type2\"]}"}'
   ```

   コマンドの例を次に示します。

   ```
   $ aws resource-groups create-group \
       --name My-CFN-stack-group \
       --description "My first CloudFormation stack-based group" \
       --resource-query '{"Type":"CLOUDFORMATION_STACK_1_0","Query":"{\"StackIdentifier\":\"arn:aws:cloudformation:us-west-2:123456789012:stack\/AWStestuseraccount\/fb0d5000-aba8-00e8-aa9e-50d5cEXAMPLE\",\"ResourceTypeFilters\":[\"AWS::EC2::Instance\",\"AWS::S3::Bucket\"]}"}'
   ```

1. このコマンドのレスポンスで返る内容は次のとおりです。
   + 作成したグループの詳細な説明。
   + グループの作成に使用したリソースクエリ。

------