

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

# 在 中建立查詢型群組 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\"}'
```

# 建置標籤型查詢並建立群組
<a name="gettingstarted-query-tag-based"></a>

下列程序說明如何建置標籤型查詢，並使用它來建立資源群組。

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

1. 登入 [AWS Resource Groups 主控台](https://console.aws.amazon.com/resource-groups)。

1. 在導覽窗格中，選擇**[建立資源群組](https://console.aws.amazon.com/resource-groups/groups/new)**。

1. 在**建立查詢型群組**頁面的**群組類型**下，選擇**標籤型**群組類型。

1. 在**分組條件**下，選擇您要在資源群組中的資源類型。您在查詢中最多可以有 20 個資源類型。用於此逐步解說時，請選擇 **AWS::EC2::Instance** 與 **AWS::S3::Bucket**。

1. 仍在**分組條件**下，針對**標籤**，指定標籤索引鍵或標籤索引鍵和值對，以限制相符的資源僅包含使用您指定值加上標籤的資源。完成標籤時，選擇 **Add (新增)** 或按下 **Enter** 鍵。在這個範例中，對擁有 **Stage (階段)** 標籤索引鍵的資源進行篩選。標籤值是選用的，但可以進一步縮小查詢的結果。您可以在標籤值之間新增`OR`運算子，為標籤金鑰新增多個值。若要新增更多標籤，請選擇 **Add (新增)**。查詢會將 `AND` 運算子指派至標籤，因此，查詢會傳回符合指定資源類型和所有指定標籤的任何資源。

1. 在**分組條件**下，選擇**預覽群組資源**，以傳回帳戶中符合指定標籤索引鍵或索引鍵的 EC2 執行個體和 S3 儲存貯體清單。

1. 取得您想要的結果後，請根據此查詢建立群組。

   1. 在**群組詳細資訊**下，針對**群組名稱**，輸入資源群組的名稱。

      資源群組名稱最多可有 128 個字元，包括字母、數字、連字號、句點和底線。名稱開頭不可是 `AWS` 或 `aws`。這些是預留字。資源群組名稱在您帳戶中的目前區域中必須是唯一的。

   1. (選用) 在 **Group description (群組描述)** 中，輸入群組的描述。

   1. (選用) 在 **Group tags (群組標籤)** 中，新增只適用於資源群組 (而非群組中的成員資源) 的標籤索引鍵和值組。

      如果您計劃讓此群組成為更大群組的成員，則群組標籤很有用。因為建立群組需要指定至少一個標籤索引鍵，請確保在 **Group tags (群組標籤)** 中將至少一個標籤索引鍵新增至您計劃要巢狀組合成更大群組的群組。

1. 完成後，請選擇**建立群組**。

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

以標籤為基礎的群組是根據類型 `TAG_FILTERS_1_0` 的查詢。

1. 在 AWS CLI 工作階段中，輸入以下內容，然後按 **Enter**，將群組名稱、描述、資源類型、標籤索引鍵和標籤值的值取代為您自己的值。描述最多可有 512 個字元，包括字母、數字、連字號、底線、標點符號和空格。您在查詢中最多可以有 20 個資源類型。資源群組名稱最多可有 128 個字元，包括字母、數字、連字號、句點和底線。名稱開頭不可是 `AWS` 或 `aws`。這些是預留字。資源群組名稱在您的帳戶中必須是唯一的。

   `ResourceTypeFilters` 至少需要一個值。若要指定所有資源類型，請使用 `AWS::AllSupported` 作為 `ResourceTypeFilters` 值。

   ```
   $ 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. 在導覽窗格中，選擇**[建立資源群組](https://console.aws.amazon.com/resource-groups/groups/new)**。

1. 在**建立查詢型群組**的**群組類型**下，選擇 **CloudFormation 堆疊型**群組類型。

1. 選擇您想要成為您的群組基礎的堆疊。一個資源群組只能根據一個堆疊。若要篩選堆疊的清單，請從輸入堆疊的名稱開始。只有具有支援狀態的堆疊會顯示在清單中。

1. 選擇堆疊中您想要包含在群組中的資源類型。針對此逐步解說，保留預設值，**All supported resource types (所有支援的資源類型)**。如需支援及可在群組中的資源類型的詳細資訊，請參閱[您可以搭配 AWS Resource Groups 和 標籤編輯器使用的資源類型](supported-resources.md)。

1. 選擇**檢視群組資源**，以傳回 CloudFormation 堆疊中符合您所選資源類型的資源清單。

1. 取得您想要的結果後，請根據此查詢建立群組。

   1. 在**群組詳細資訊**下，針對**群組名稱**，輸入資源群組的名稱。

      資源群組名稱最多可有 128 個字元，包括字母、數字、連字號、句點和底線。名稱開頭不可是 `AWS` 或 `aws`。這些是預留字。資源群組名稱在您帳戶中的目前區域中必須是唯一的。

   1. (選用) 在 **Group description (群組描述)** 中，輸入群組的描述。

   1. (選用) 在 **Group tags (群組標籤)** 中，新增只適用於資源群組 (而非群組中的成員資源) 的標籤索引鍵和值組。

      如果您計劃讓此群組成為更大群組的成員，則群組標籤很有用。因為建立群組需要指定至少一個標籤索引鍵，請確保在 **Group tags (群組標籤)** 中將至少一個標籤索引鍵新增至您計劃要巢狀組合成更大群組的群組。

1. 完成後，請選擇**建立群組**。

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

 CloudFormation 堆疊型群組是以類型 的查詢為基礎`CLOUDFORMATION_STACK_1_0`。

1. 執行下列命令，將群組名稱、描述、堆疊識別符和資源類型的值取代為您自己的值。描述最多可有 512 個字元，包括字母、數字、連字號、底線、標點符號和空格。

   如果您未指定資源類型，資源群組會在堆疊中包含所有支援的資源類型。您在查詢中最多可以有 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. 以下是回應命令而傳回的。
   + 您已建立之群組的完整說明。
   + 您用來建立群組的資源查詢。

------