使用 AWS CLI 的资源组示例 - AWS Command Line Interface

本文档仅适用于 AWS CLI 版本 1。有关 AWS CLI 版本 2 的相关文档,请参阅版本 2 用户指南

使用 AWS CLI 的资源组示例

以下代码示例演示了如何通过将 AWS Command Line Interface与资源组结合使用来执行操作和实现常见场景。

操作是大型程序的代码摘录,必须在上下文中运行。您可以通过操作了解如何调用单个服务函数,还可以通过函数相关场景的上下文查看操作。

每个示例都包含一个指向完整源代码的链接,您可以从中找到有关如何在上下文中设置和运行代码的说明。

主题

操作

以下代码示例演示如何使用 create-group

AWS CLI

示例 1:创建基于标签的资源组

以下 create-group 示例在当前区域中创建 Amazon EC2 实例的基于标签的资源组。它基于使用键 Name 和值 WebServers 标记的资源的查询。日志组为 tbq-WebServer。该查询在传递给命令的单独 JSON 文件中。

aws resource-groups create-group \ --name tbq-WebServer \ --resource-query file://query.json

query.json 的内容:

{ "Type": "TAG_FILTERS_1_0", "Query": "{\"ResourceTypeFilters\":[\"AWS::EC2::Instance\"],\"TagFilters\":[{\"Key\":\"Name\", \"Values\":[\"WebServers\"]}]}" }

输出:

{ "Group": { "GroupArn": "arn:aws:resource-groups:us-west-2:123456789012:group/tbq-WebServer", "Name": "tbq-WebServer" }, "ResourceQuery": { "Type": "TAG_FILTERS_1_0", "Query": "{\"ResourceTypeFilters\":[\"AWS::EC2::Instance\"],\"TagFilters\":[{\"Key\":\"Name\", \"Values\":[\"WebServers\"]}]}" } }

示例 2:创建基于 CloudFormation 堆栈的资源组

以下 create-group 示例创建了一个名为 sampleCFNstackgroup 的基于 AWS CloudFormation 堆栈的资源组。该查询包括 AWS Resource Groups 支持的指定 CloudFormation 堆栈中的所有资源。

aws resource-groups create-group \ --name cbq-CFNstackgroup \ --resource-query file://query.json

query.json 的内容:

{ "Type": "CLOUDFORMATION_STACK_1_0", "Query": "{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"StackIdentifier\":\"arn:aws:cloudformation:us-west-2:123456789012:stack/MyCFNStack/1415z9z0-z39z-11z8-97z5-500z212zz6fz\"}" }

输出:

{ "Group": { "GroupArn": "arn:aws:resource-groups:us-west-2:123456789012:group/cbq-CFNstackgroup", "Name": "cbq-CFNstackgroup" }, "ResourceQuery": { "Type": "CLOUDFORMATION_STACK_1_0", "Query": "{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"StackIdentifier\":\"arn:aws:cloudformation:us-east-2:123456789012:stack/MyCFNStack/1415z9z0-z39z-11z8-97z5-500z212zz6fz\"}"}' } }

有关更多信息,请参阅《AWS 用户指南》中的创建组

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 CreateGroup

以下代码示例演示如何使用 delete-group

AWS CLI

更新资源组的描述

以下 delete-group 示例更新了指定资源组。

aws resource-groups delete-group \ --group-name tbq-WebServer

输出:

{ "Group": { "GroupArn": "arn:aws:resource-groups:us-west-2:1234567890:group/tbq-WebServer", "Name": "tbq-WebServer" } }

有关更多信息,请参阅《AWS 用户指南》中的删除组

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 DeleteGroup

以下代码示例演示如何使用 get-group-query

AWS CLI

将查询附加到资源组

以下 get-group-query 示例显示了附加到指定资源组的查询。

aws resource-groups get-group-query \ --group-name tbq-WebServer

输出:

{ "GroupQuery": { "GroupName": "tbq-WebServer", "ResourceQuery": { "Type": "TAG_FILTERS_1_0", "Query": "{\"ResourceTypeFilters\":[\"AWS::EC2::Instance\"],\"TagFilters\":[{\"Key\":\"Name\", \"Values\":[\"WebServers\"]}]}" } } }
  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 GetGroupQuery

以下代码示例演示如何使用 get-group

AWS CLI

获取有关资源组的信息

以下 get-group 示例显示了有关指定资源组的详细信息。要将查询附加到群组,请使用 get-group-query

aws resource-groups get-group \ --group-name tbq-WebServer

输出:

{ "Group": { "GroupArn": "arn:aws:resource-groups:us-west-2:123456789012:group/tbq-WebServer", "Name": "tbq-WebServer", "Description": "A tag-based query resource group of WebServers." } }
  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 GetGroup

以下代码示例演示如何使用 get-tags

AWS CLI

检索附加到资源组的标签

以下 get-tags 示例显示了附加到指定资源组(组本身,而不是其成员)的标签键和值对。

aws resource-groups get-tags \ --arn arn:aws:resource-groups:us-west-2:123456789012:group/tbq-WebServer

输出:

{ "Arn": "arn:aws:resource-groups:us-west-2:123456789012:group/tbq-WebServer", "Tags": { "QueryType": "tags", "QueryResources": "ec2-instances" } }
  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 GetTags

以下代码示例演示如何使用 list-group-resources

AWS CLI

列出资源组中的所有资源

示例 1:以下 list-resource-groups 示例列出了属于指定资源组的所有资源。

aws resource-groups list-group-resources \ --group-name tbq-WebServer

输出:

{ "ResourceIdentifiers": [ { "ResourceArn": "arn:aws:ec2:us-west-2:123456789012:instance/i-09f77fa38c12345ab", "ResourceType": "AWS::EC2::Instance" } ] }

示例 2:以下示例列出了组中“resource-type”也为“AWS::EC2::Instance”的所有资源。

aws resource-groups list-group-resources --group-name tbq-WebServer --filters Name=resource-type,Values=AWS::EC2::Instance

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 ListGroupResources

以下代码示例演示如何使用 list-groups

AWS CLI

列出可用的资源组

以下 list-groups 示例显示了所有资源组的列表。

aws resource-groups list-groups

输出:

{ "GroupIdentifiers": [ { "GroupName": "tbq-WebServer", "GroupArn": "arn:aws:resource-groups:us-west-2:123456789012:group/tbq-WebServer3" }, { "GroupName": "cbq-CFNStackQuery", "GroupArn": "arn:aws:resource-groups:us-west-2:123456789012:group/cbq-CFNStackQuery" } ], "Groups": [ { "GroupArn": "arn:aws:resource-groups:us-west-2:123456789012:group/tbq-WebServer", "Name": "tbq-WebServer" }, { "GroupArn": "arn:aws:resource-groups:us-west-2:123456789012:group/cbq-CFNStackQuery", "Name": "cbq-CFNStackQuery" } ] }
  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 ListGroups

以下代码示例演示如何使用 list-resource-groups

AWS CLI

列出资源组中的所有资源

以下 list-resource-groups 示例列出了属于指定资源组的所有资源。

aws resource-groups list-group-resources \ --group-name tbq-WebServer

输出:

{ "ResourceIdentifiers": [ { "ResourceArn": "arn:aws:ec2:us-west-2:123456789012:instance/i-09f77fa38c12345ab", "ResourceType": "AWS::EC2::Instance" } ] }
  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 ListResourceGroups

以下代码示例演示如何使用 put-group-configuration

AWS CLI

将服务配置附加到资源组

示例 1:以下 put-group-configuration 示例指定资源组仅包含 C5M5 系列中实例的 Amazon EC2 容量预留。

aws resource-groups put-group-configuration \ --group MyTestGroup \ --configuration file://config.json

config.json 的内容:

[ { "Type": "AWS::EC2::HostManagement", "Parameters": [ { "Name": "allowed-host-families", "Values": [ "c5", "m5" ] }, { "Name": "any-host-based-license-configuration", "Values": [ "true" ] } ] }, { "Type": "AWS::ResourceGroups::Generic", "Parameters": [ { "Name": "allowed-resource-types", "Values": [ "AWS::EC2::Host" ] }, { "Name": "deletion-protection", "Values": [ "UNLESS_EMPTY" ] } ] } ]

如果成功,此命令不会产生任何输出。

有关更多信息,请参阅《资源组 API 参考指南》中的资源组的服务配置

以下代码示例演示如何使用 search-resources

AWS CLI

查找与查询相匹配的资源

以下 search-resources 示例检索与指定查询匹配的所有 AWS 资源的列表。

aws resource-groups search-resources \ --resource-query file://query.json

query.json 的内容:

{ "Type": "TAG_FILTERS_1_0", "Query": "{\"ResourceTypeFilters\":[\"AWS::EC2::Instance\"],\"TagFilters\":[{\"Key\":\"Patch Group\", \"Values\":[\"Dev\"]}]}" }

输出:

{ "ResourceIdentifiers": [ { "ResourceArn": "arn:aws:ec2:us-west-2:123456789012:instance/i-01a23bc45d67890ef", "ResourceType": "AWS::EC2::Instance" } ] }
  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 SearchResources

以下代码示例演示如何使用 tag

AWS CLI

将标签附加到资源组

以下 tag 示例将指定的标签键和值对附加到指定的资源组(组本身,而不是其成员)。

aws resource-groups tag \ --tags QueryType=tags,QueryResources=ec2-instances \ --arn arn:aws:resource-groups:us-west-2:128716708097:group/tbq-WebServer

输出:

{ "Arn": "arn:aws:resource-groups:us-west-2:128716708097:group/tbq-WebServer", "Tags": { "QueryType": "tags", "QueryResources": "ec2-instances" } }

有关更多信息,请参阅《AWS 资源组用户指南》中的管理标签

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 Tag

以下代码示例演示如何使用 untag

AWS CLI

从资源中删除标签

以下 untags 示例从资源组(而非其成员)中删除具有指定键的所有标签。

aws resource-groups untag \ --arn arn:aws:resource-groups:us-west-2:123456789012:group/tbq-WebServer \ --keys QueryType

输出:

{ "Arn": "arn:aws:resource-groups:us-west-2:123456789012:group/tbq-WebServer", "Keys": [ "QueryType" ] }

有关更多信息,请参阅《AWS 资源组用户指南》中的管理标签

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 Untag

以下代码示例演示如何使用 update-group-query

AWS CLI

示例 1:更新基于标签的资源组的查询

以下 update-group-query 示例更新了附加到基于指定标签的资源组的查询。

aws resource-groups update-group-query \ --group-name tbq-WebServer \ --resource-query '{"Type":"TAG_FILTERS_1_0", "Query":"{\"ResourceTypeFilters\":[\"AWS::EC2::Instance\"],\"TagFilters\":[{\"Key\":\"Name\", \"Values\":[\"WebServers\"]}]}"}'

输出:

{ "Group": { "GroupArn": "arn:aws:resource-groups:us-east-2:123456789012:group/tbq-WebServer", "Name": "tbq-WebServer" }, "ResourceQuery": { "Type": "TAG_FILTERS_1_0", "Query": "{\"ResourceTypeFilters\":[\"AWS::EC2::Instance\"],\"TagFilters\":[{\"Key\":\"Name\", \"Values\":[\"WebServers\"]}]}" } }

有关更多信息,请参阅《AWS 资源组用户指南》中的更新组

示例 2:更新基于 CloudFormation 堆栈的资源组的查询

以下 update-group-query 示例更新了附加到基于指定 AWS CloudFormation 堆栈的资源组的查询。

aws resource-groups update-group-query \ --group-name cbq-CFNstackgroup \ --resource-query '{"Type": "CLOUDFORMATION_STACK_1_0", "Query": "{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"StackIdentifier\":\"arn:aws:cloudformation:us-west-2:123456789012:stack/MyCFNStack/1415z9z0-z39z-11z8-97z5-500z212zz6fz\"}"}'

输出:

{ "Group": { "GroupArn": "arn:aws:resource-groups:us-west-2:123456789012:group/cbq-CFNstackgroup", "Name": "cbq-CFNstackgroup" }, "ResourceQuery": { "Type": "CLOUDFORMATION_STACK_1_0", "Query": "{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"StackIdentifier\":\"arn:aws:cloudformation:us-west-2:123456789012:stack/MyCFNStack/1415z9z0-z39z-11z8-97z5-500z212zz6fz\"}" } }

有关更多信息,请参阅《AWS 资源组用户指南》中的更新组

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 UpdateGroupQuery

以下代码示例演示如何使用 update-group

AWS CLI

更新资源组的描述

以下 update-group 示例更新指定资源组的描述。

aws resource-groups update-group \ --group-name tbq-WebServer \ --description "Resource group for all web server resources."

输出:

{ "Group": { "GroupArn": "arn:aws:resource-groups:us-west-2:123456789012:group/tbq-WebServer", "Name": "tbq-WebServer" "Description": "Resource group for all web server resources." } }

有关更多信息,请参阅《AWS 资源组用户指南》中的更新组

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 UpdateGroup