在中创建基于查询的群组 Amazon Resource Groups - Amazon Resource Groups
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在中创建基于查询的群组 Amazon Resource Groups

资源组查询的类型

在中 Amazon Resource Groups,查询是基于查询的群组的基础。您可以将资源组基于两种类型的查询之一。

基于标签

基于标签的查询包含使用以下格式 AWS::service::resource 和标签指定的资源类型列表。标签 是帮助识别组织中的资源以及对其进行排序的键。(可选)标签包含键的值。

对于基于标签的查询,您还可以指定要作为组成员的资源共享的标签。例如,如果您要创建一个资源组,其中包含用于运行应用程序测试阶段的所有 Amazon EC2 实例和 Amazon S3 存储桶,并且您的实例和存储桶以这种方式标记,请从下拉列表中选择AWS::EC2::InstanceAWS::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结构的 a。此查询仅匹配标签为 “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\"]}]}"}'
基于Amazon CloudFormation 堆栈

在 Amazon CloudFormation 基于堆 Amazon CloudFormation 栈的查询中,您在当前区域的账户中选择一个堆栈,然后在堆栈中选择要加入该组的资源类型。您只能基于一个 Amazon CloudFormation 堆栈进行查询。

注意

一个 Amazon CloudFormation 堆栈可以包含其他 Amazon CloudFormation “子” 堆栈。但是,基于“父”堆栈的资源组并不能将子堆栈的所有资源都作为组成员获取。资源组将子堆栈作为单个组成员添加到父堆栈的资源组中,并且不会对其进行扩展。

Resource Groups 支持基于具有以下状态之一的 Amazon CloudFormation 堆栈的查询。

  • CREATE_COMPLETE

  • CREATE_IN_PROGRESS

  • DELETE_FAILED

  • DELETE_IN_PROGRESS

  • REVIEW_IN_PROGRESS

重要

只有在查询中作为堆栈一部分直接创建的资源才会包含在资源组中。以后由 Amazon CloudFormation 堆栈成员创建的资源不会成为该组的成员。例如,如果由创建的自动缩放组 Amazon CloudFormation 作为堆栈的一部分,则该自动缩放组就是该组的成员。但是,由该自动扩展组作为其操作一部分创建的 Amazon EC2 实例不是基于 Amazon CloudFormation 堆栈的资源组的成员。

如果您基于 Amazon CloudFormation 堆栈创建群组,并且该堆栈的状态更改为不再支持作为群组查询基础的群组(例如)DELETE_COMPLETE,则该资源组仍然存在,但它没有成员资源。

在创建资源组后,您可以在该组中的资源上执行任务。

CloudFormation 基于堆栈的资源组的ResourceQuery参数语法包含以下元素:

  • Type

    此元素表示哪种查询定义此资源组。

    要创建 Amazon CloudFormation 基于堆栈的资源组,请按如下方式指定值CLOUDFORMATION_STACK_1_0

    "Type": "CLOUDFORMATION_STACK_1_0"
  • Query

    此元素定义用于匹配资源的实际查询。它包含具有以下元素的JSON结构的字符串表示形式:

    • ResourceTypeFilters

      此元素将结果限制为仅匹配筛选条件的资源类型。可以指定以下值:

      • "AWS::AllSupported" – 指定结果可以包括与查询匹配的任何类型的资源。

      • "AWS::service-id::resource-type – 以逗号分隔的资源类型规范字符串列表,其格式为:,例如 "AWS::EC2::Instance"

    • StackIdentifier

      此元素指定要将其资源包含在组中的 Amazon CloudFormation 堆栈的 Amazon 资源名称 (ARN)。

所有这些JSON元素都必须组合成JSON结构的单行字符串表示形式。例如,假设Query具有以下示例JSON结构的 a。此查询旨在仅匹配属于指定 Amazon 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\"}'