本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立以查詢為基礎的群組 AWS Resource Groups
資源群組查詢的類型
在中 AWS Resource Groups,查詢是以查詢為基礎的群組的基礎。您可以讓資源群組以以下兩個類型查詢中的一個為基礎。
- 以標籤為基礎
-
以標籤為基礎的查詢包括以下列格
AWS::
式指定的資源類型清單和標籤。標籤為索引鍵,可幫助識別和排序組織中的資源。標籤選擇性地包含索引鍵的值。service
::resource
針對以標籤為基礎的查詢,您也可以指定您要其成為群組成員的資源所共用的標籤。例如,如果您想要建立一個資源群組,其中包含您用來EC2執行應用程式測試階段的所有 Amazon 執行個體和 Amazon S3 儲存貯體,並且擁有以此方式標記的執行個體
AWS::EC2::Instance
和值區,請從下拉式清單中選擇和AWS::S3::Bucket
資源類型,然後指定標籤值的標籤金鑰Stage
Test
。以標籤為基礎的資源群組的
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結構的單行字符串表示。例如,考慮一個
Query
具有以下示例JSON結構。此查詢旨在僅比對具有標籤「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\"]}]}"}'
-
- 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
此元素將結果限制為僅符合篩選條件的資源類型。您可以指定下列值:
-
"AWS::AllSupported"
— 指定結果可包含符合查詢之任何類型的資源。 -
"AWS::
— 以逗號分隔的資源類型規格字串清單,其格式為:,例如。service-id
::resource-type
"AWS::EC2::Instance"
-
-
StackIdentifier
此元素指定要包含在群組中的資源之 AWS CloudFormation 堆疊的 Amazon 資源名稱 (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\"}'