在 AWS 资源组 中构建查询和组 - AWS 资源组
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

在 AWS 资源组 中构建查询和组

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

基于标签

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

对于基于标签的查询,您还可以指定要作为组成员的资源共享的标签。例如,如果要创建的资源组具有用于运行应用程序测试阶段的所有 Amazon EC2 实例和 Amazon S3 存储桶,并且您具有以这种方式标记的实例和存储桶,请从下拉列表中选择 AWS::EC2::InstanceAWS::S3::Bucket 资源类型,然后指定标签键 Stage 和标签值 Test

AWS CloudFormation 基于堆栈

在基于 AWS CloudFormation 堆栈的查询中,您可以在您的账户的当前区域中选择一个 AWS CloudFormation 堆栈,然后在该堆栈中选择要包含在组中的资源类型。您只能将查询基于一个 AWS CloudFormation 堆栈。资源组 支持基于具有以下状态之一的 AWS CloudFormation 堆栈的查询。

如果创建一个基于 AWS CloudFormation 堆栈的组,并且该堆栈变为不再支持作为组查询基础的状态(如 DELETE_COMPLETE),该组仍然存在,但它没有成员资源。

  • CREATE_COMPLETE

  • CREATE_IN_PROGRESS

  • DELETE_IN_PROGRESS

  • DELETE_FAILED

  • REVIEW_IN_PROGRESS

  • ROLLBACK_IN_PROGRESS

  • ROLLBACK_FAILED

  • UPDATE_IN_PROGRESS

  • UPDATE_COMPLETE_CLEANUP_IN_PROGRESS

  • UPDATE_COMPLETE

  • UPDATE_ROLLBACK_IN_PROGRESS

  • UPDATE_ROLLBACK_FAILED

  • UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS

  • UPDATE_ROLLBACK_COMPLETE

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

构建查询并创建组(控制台)

以下过程说明了如何在 AWS 管理控制台中构建查询和创建资源组。

创建基于标签的组

  1. 从 AWS 管理控制台的左上角打开 资源组。选择创建资源组

  2. 创建基于查询的组页面上的组类型中,选择基于标签组类型。

    
                             创建组页面。
  3. 分组条件中,选择要包含在资源组中的资源类型。您最多可以在查询中包含 20 种资源类型。对于本演练,请选择 AWS::EC2::InstanceAWS::S3::Bucket

    
                             分组条件区域:在基于标签的查询中选择的 EC2 实例和 S3 存储桶资源类型。
  4. 标签中,指定一个标签键或标签键和值对,以将您的账户中的 EC2 实例和 S3 存储桶限制为仅使用指定值标记的实例和存储桶。在完成您的标签时,请选择 Add (添加) 或按 Enter。在该示例中,筛选具有 Stage 标签键的资源。标签值是可选的,但会进一步缩小查询的结果。您可以通过在标签值之间添加 OR 运算符来为标签键添加多个值。要添加更多标签,请选择添加。查询将 AND 运算符分配给标签,以便与指定的资源类型和所有指定标签匹配的任何资源都将由查询返回。

    
                            指定了标签键的查询。
  5. 选择查看组资源以返回您的账户中与一个或多个指定标签键匹配的 EC2 实例和 S3 存储桶列表。

  6. 要根据查询创建资源组,请输入名称并有选择地输入描述。

    1. 组名称中,键入您的资源组的名称。

      资源组名称最多可以包含 128 个字符,包括字母、数字、连字符、句点和下划线。名称不能以 AWSaws 开头。 这些是预留的。资源组名称在您账户的当前区域中必须是唯一的。

    2. (可选)在组描述中,输入您的组的描述。

    3. (可选)在组标签中,添加仅适用于资源组(而不适用于组中的成员资源)的标签键和值对。

      如果计划将此组作为较大组的成员,则组标签非常有用。由于需要指定至少一个标签键以创建组,因此,请务必将组标签中的至少一个标签键添加到打算嵌套到更大组的组中。

  7. 在完成后,选择创建组

创建基于 AWS CloudFormation 堆栈的组

  1. 从 AWS 管理控制台的左上角打开 资源组。

  2. 选择创建资源组

  3. Create query-based group (创建基于查询的组) 上的 Group type (组类型) 中,选择基于 CloudFormation 堆栈的组类型。

    
                             组类型  区域,CloudFormation 基于堆栈的组类型处于选中状态。
  4. 选择要作为组基础的堆栈。只能将资源组基于一个堆栈。要筛选堆栈列表,请开始键入堆栈的名称。仅在列表中显示具有支持的状态的堆栈。

    
                            “创建资源组”页面;未选择任何资源类型;基于 AWS CloudFormation 堆栈的查询。
  5. 在堆栈中选择要包含在组中的资源类型。对于本演练,请保留默认值所有受支持的资源类型。有关可以包含在组中的受支持资源类型的更多信息,请参阅可以与 AWS 资源组 一起使用的资源

  6. 选择查看组资源以返回 AWS CloudFormation 堆栈中与选定资源类型匹配的资源列表。

  7. 要根据查询创建资源组,请输入名称并有选择地输入描述。

    1. 组名称中,输入您的资源组的名称。

      资源组名称最多可以包含 128 个字符,包括字母、数字、连字符、句点和下划线。名称不能以 AWSaws 开头。 这些是预留的。资源组名称在您账户的当前区域中必须是唯一的。

    2. (可选)在组描述中,输入您的组的描述。

    3. (可选)在组标签中,添加仅适用于资源组(而不适用于组中的成员资源)的标签键和值对。

      如果计划将此组作为较大组的成员,则组标签非常有用。由于需要指定至少一个标签键以创建组,因此,请务必将组标签中的至少一个标签键添加到打算嵌套到更大组的组中。

  8. 在完成后,选择创建组

构建查询并创建组 (AWS CLI)

以下过程说明了如何在 AWS CLI 中构建查询和创建资源组。

在 AWS CLI 中,您在同一命令中构建查询并创建您的资源组。本主题中显示的 AWS CLI 命令创建组。

在 资源组 中创建基于标签的组

基于标签的组基于 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 中创建基于 资源组 堆栈的组

基于 AWS CloudFormation 堆栈的组基于 CLOUDFORMATION_STACK_1_0 类型的查询。

  1. 在 AWS CLI 会话中,键入以下内容,然后按 Enter,以将组名称、描述、堆栈标识符和资源类型替换为您自己的值。描述最多可以包含 512 个字符,包括字母、数字、连字符、下划线、标点符号和空格。

    如果未指定资源类型,则资源组包含堆栈中的所有支持的资源类型。您最多可以在查询中包含 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-cn:cloudformation:us-west-2:123456789012:stack\/AWStestuseraccount\/fb0d5000-aba8-00e8-aa9e-50d5cEXAMPLE\",\"ResourceTypeFilters\":[\"AWS::EC2::Instance\",\"AWS::S3::Bucket\"]}"}'
  2. 在对命令的响应中返回以下内容。

    • 您创建的组的完整描述。

    • 您用于创建组的资源查询。