

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 中建立查詢型群組 AWS Resource Groups
<a name="gettingstarted-query"></a>

## 資源群組查詢的類型
<a name="getting_started-query_types"></a>

在 中 AWS Resource Groups，*查詢*是查詢型群組的基礎。您可以讓資源群組以以下兩個類型查詢中的一個為基礎。

 **以標籤為基礎**   
標籤型查詢包括以下列格式 `AWS::{{service}}::{{resource}}`、 和 標籤指定的資源類型清單。*標籤*為索引鍵，可幫助識別和排序組織中的資源。標籤選擇性地包含索引鍵的值。  
針對以標籤為基礎的查詢，您也可以指定您要其成為群組成員的資源所共用的標籤。例如，如果您想要建立資源群組，其中包含您用來執行應用程式測試階段的所有 Amazon EC2 執行個體和 Amazon S3 儲存貯體，而且您擁有以這種方式標記的執行個體和儲存貯體，請從下拉式清單中選擇 `AWS::S3::Bucket` `AWS::EC2::Instance`和資源類型，然後指定標籤索引鍵 **Stage**，標籤值為 **Test**。  
標籤型資源群組的 `ResourceQuery` 參數語法包含下列元素：  
+  `Type` 

  此元素指出哪種查詢會定義此資源群組。若要建立標籤型資源群組，請指定值 `TAG_FILTERS_1_0`，如下所示：

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

   此元素定義用於比對 資源的實際查詢。它包含具有下列元素的 JSON 結構字串表示法：
  +  `ResourceTypeFilters` 

    此元素會將結果限制為僅符合篩選條件的資源類型。您可以指定下列值：
    + `"AWS::AllSupported"` – 指定結果可以包含符合查詢且資源群組服務目前支援的任何類型資源。
    + `"AWS::{{service-id}}::{{resource-type}}` – 資源類型規格字串的逗號分隔清單，格式如下：，例如 `"AWS::EC2::Instance"`。
  +  `TagFilters` 

    此元素會指定金鑰/值字串對，這些字串對會與連接至資源的標籤進行比較。具有符合篩選條件之標籤索引鍵和值的人員會包含在 群組中。每個篩選條件都包含下列元素：
    + `"Key"` – 具有金鑰名稱的字串。只有具有相符索引鍵名稱之標籤的資源符合篩選條件，且為群組的成員。
    + `"Values"` – 字串，其中包含以逗號分隔的指定索引鍵值清單。只有具有相符標籤索引鍵和符合此清單中值的資源，才是群組的成員。
所有這些 JSON 元素都必須合併為 JSON 結構的單行字串表示法。例如，請考慮`Query`具有下列範例 JSON 結構的 。此查詢旨在僅比對標籤為「階段」且值為「測試」的 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 堆疊，然後在堆疊中選擇您要在群組中的資源類型。您只能以一個 CloudFormation 堆疊為基礎的查詢。  
 CloudFormation 堆疊可以包含其他 CloudFormation 「子」堆疊。不過，以「父」堆疊為基礎的資源群組不會以群組成員身分取得所有子堆疊的資源。資源群組會將子堆疊新增至父堆疊的資源群組做為單一群組成員，而不會展開它們。
資源群組支援以具有下列其中一種狀態的 CloudFormation 堆疊為基礎的查詢。  
+ `CREATE_COMPLETE`
+ `CREATE_IN_PROGRESS`
+ `DELETE_FAILED`
+ `DELETE_IN_PROGRESS`
+ `REVIEW_IN_PROGRESS`
只有直接建立為查詢中堆疊一部分的資源，才會包含在資源群組中。 CloudFormation 堆疊成員稍後建立的資源不會成為群組的成員。例如，如果 建立自動擴展群組 CloudFormation 做為堆疊的一部分，則該自動擴展群組***即***為群組的成員。不過，該自動擴展群組在操作過程中建立的 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 Resource Name (ARN)。

所有這些 JSON 元素都必須合併為 JSON 結構的單行字串表示法。例如，請考慮`Query`具有下列範例 JSON 結構的 。此查詢旨在僅比對屬於指定 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\"}'
```