建立以查詢為基礎的群組AWS Resource Groups - AWS Resource Groups

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

建立以查詢為基礎的群組AWS Resource Groups

資源群組查詢的類型

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

以標籤為基礎

以標籤為基礎的查詢包括以下列格式AWS::service::resource指定的資源類型清單和標籤。標籤為索引鍵,可幫助識別和排序組織中的資源。標籤選擇性地包含索引鍵的值。

針對以標籤為基礎的查詢,您也可以指定您要其成為群組成員的資源所共用的標籤。例如,如果您想要建立一個資源群組,其中包含用來執行應用程式測試階段的所有 Amazon EC2 執行個體和 Amazon S3 儲存貯體,並且擁有以此方式標記的執行個體AWS::EC2::Instance和值區,請從下拉式清單中選擇和AWS::S3::Bucket資源類型,然後指定標籤金鑰Stage (標籤值為)Test

以標籤為基礎的資源群組的ResourceQuery參數語法包含下列元素:

  • Type

    此元素會指出定義此資源群組的查詢類型。若要建立以標籤為基礎的資源群組,請指定值TAG_FILTERS_1_0,如下所示:

    "Type": "TAG_FILTERS_1_0"
  • Query

    這個元素會定義用來比對資源的實際查詢。它包含具有下列元素的 JSON 結構的字串表示法:

    • ResourceTypeFilters

      此元素會將結果限制為僅符合篩選的那些 Resource Name。您可以指定下列值:

      • "AWS::AllSupported"— 指定結果可包含符合查詢且 Resource Groups 服務目前支援之任何類型的資源。

      • "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\"]}]}"}'
AWS CloudFormation基於堆棧

在以 AWS CloudFormation 堆疊為基礎的查詢中,您可以選擇您的目前區域帳戶中的 AWS CloudFormation 堆疊,然後在堆疊中選擇您希望在群組中的資源類型。您可以將查詢僅以一個 AWS CloudFormation 堆疊為根據。

注意

AWS CloudFormation堆棧可以包含其他AWS CloudFormation「子」堆棧。但是,基於「父」堆棧的資源組不會將所有子堆棧的資源作為組成員獲取。資源群組會將子堆疊新增至父系堆疊的資源群組,做為單一群組成員,而不會展開它們。

Resource Groups 支援根據具有下列其中一種狀態的AWS CloudFormation堆疊進行查詢。

  • CREATE_COMPLETE

  • CREATE_IN_PROGRESS

  • DELETE_FAILED

  • DELETE_IN_PROGRESS

  • REVIEW_IN_PROGRESS

重要

只有直接建立為查詢堆疊一部分的資源才會包含在資源群組中。之後由AWS CloudFormation堆疊成員建立的資源不會成為群組的成員。例如,如果自動調整資源群組是AWS CloudFormation由堆疊的一部分建立,則該 auto-scaling 群組就是群組的成員。但是,由該 auto-scaling 群組建立的 Amazon EC2 執行個體作為其操作的一部分,並不是AWS CloudFormation堆疊型資源群組的成員。

如果您根據AWS CloudFormation堆疊建立群組,而堆疊的狀態會變更為不再支援做為群組查詢的基礎 (例如DELETE_COMPLETE,資源群組仍然存在,但沒有成員資源)。

建立資源群組後,您可以對群組中的資源執行工作。

CloudFormation 堆疊型資源群組的ResourceQuery參數語法包含下列元素:

  • Type

    此元素會指出定義此資源群組的查詢類型。

    若要建立AWS CloudFormation以堆疊為基礎的資源群組,請指定值CLOUDFORMATION_STACK_1_0,如下所示:

    "Type": "CLOUDFORMATION_STACK_1_0"
  • Query

    這個元素會定義用來比對資源的實際查詢。它包含具有下列元素的 JSON 結構的字串表示法:

    • ResourceTypeFilters

      此元素會將結果限制為僅符合篩選的那些 Resource Name。您可以指定下列值:

      • "AWS::AllSupported"— 指定結果可包含符合查詢之任何類型的資源。

      • "AWS::service-id::resource-type— 以逗號分隔的資源類型規格字串清單,其格式為:,例如"AWS::EC2::Instance"

    • StackIdentifier

      此元素指定要將其 Resource Name (ARN) 的AWS CloudFormation堆疊的 Amazon Resource Name (ARN)。

所有這些 JSON 元素都必須合併成 JSON 結構的單行字串表示法。例如,考慮一個Query與下面的示例 JSON 結構。此查詢僅比對屬於指定AWS 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\"}'

建立以標籤為基礎的查詢並建立群組

下列程序說明如何建立以標籤為基礎的查詢,並使用它來建立資源群組。

Console
  1. 登入 AWS Resource Groups 主控台

  2. 在導覽窗格

  3. 在 [建立查詢型群組] 頁面的 [群組類型] 下,選擇 [標記型群組類型]。

  4. 在 [分組準則] 底下,選擇您要加入資源群組的資源類型。您在查詢中最多可以有 20 個資源類型。對於本逐步解說,請選擇AWS::EC2::InstanceAWS::S3::Bucket

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

  6. 仍在分組標準下,選擇預覽群組資源以傳回您帳戶中符合指定標籤金鑰的 EC2 執行個體和 S3 儲存貯體清單。

  7. 取得所需結果後,請根據此查詢建立群組。

    1. 在 [群組詳細資料] 下,對於 [群組名稱],輸入資源群組的名稱。

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

    2. (選用) 在 Group description (群組描述) 中,輸入群組的描述。

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

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

  8. 完成後,請選擇 [建立群組]。

AWS CLI & AWS SDKs

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

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

    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\"]}]}"}'
  2. 以下是回應命令而傳回的。

    • 您已建立之群組的完整說明。

    • 您用來建立群組的資源查詢。

    • 與群組相關聯的標籤。

建立AWS CloudFormation以堆疊為基礎的群組

下列程序說明如何建置以堆疊為基礎的查詢,並使用它來建立資源群組。

Console
  1. 登入 AWS Resource Groups 主控台

  2. 在導覽窗格

  3. 在 [建立查詢型群組] 上的 [群組類型] 下,選擇CloudFormation 堆疊型群組類型。

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

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

  6. 選擇 View group resources (檢視群組資源) 以傳回 AWS CloudFormation 堆疊中與您所選資源類型相符的資源清單。

  7. 取得所需結果後,請根據此查詢建立群組。

    1. 在 [群組詳細資料] 下,對於 [群組名稱],輸入資源群組的名稱。

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

    2. (選用) 在 Group description (群組描述) 中,輸入群組的描述。

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

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

  8. 完成後,請選擇 [建立群組]。

AWS CLI & AWS SDKs

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

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

    如果未指定資源類型,Resource Groups 會在堆疊中包含所有支援的資源類型。您在查詢中最多可以有 20 個資源類型。資源群組名稱最多可有 128 個字元,包括字母、數字、連字號、句點和底線。名稱開頭不可是 AWSaws。這些是預留字。資源群組名稱在您的帳戶中必須是唯一的。

    stack_identifier 是堆疊 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\"]}"}'
  2. 以下是回應命令而傳回的。

    • 您已建立之群組的完整說明。

    • 您用來建立群組的資源查詢。