使用SQL查询编辑器进行查询 (AWS CLI) - AWS Config

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

使用SQL查询编辑器进行查询 (AWS CLI)

AWS CLI 是一款用于管理您的 AWS 服务的统一工具。只需下载和配置一个工具,您就可以从命令行控制多项 AWS 服务,并使用脚本自动执行这些服务。有关 AWS CLI 和 AWS CLI 工具安装说明的更多信息,请参阅《AWS Command Line Interface 用户指南》中的以下内容。

如有必要,aws configure请输入配置 AWS CLI 为使用提供高级查询的 AWS 区域。

注意事项

先决条件

如果您使用的是以下 AWS 托管策略之一,则您将拥有运行和保存查询所需的权限:AWSServiceRoleForConfig(服务相关角色)或AWS_ConfigRole

否则,您必须拥有AWSConfigUserAccess AWS 托管策略中包含的权限。

您可以查询的属性列表

中提供了更新的属性及其数据类型列表GitHub

高级查询和聚合器

要在聚合器上运行查询,请创建聚合器。有关更多信息,请参阅 创建聚合器

如果您已经设置了聚合器,则在查询范围中,选择聚合器以在该聚合器上运行高级查询。选择聚合器时,请考虑在查询语句中添加 AWS 账户 ID 和 AWS 区域,以便在结果中查看该信息。

查询资源配置数据

使用查询编辑器 (AWS CLI) 查询针对单个账户和区域的资源配置数据
  1. 打开命令提示符或终端窗口。

  2. 输入以下命令以查询您的资源配置数据。

    aws configservice select-resource-config --expression "SELECT resourceId WHERE resourceType='AWS::EC2::Instance'"

    根据您的查询,输出将如下所示。

    { "QueryInfo": { "SelectFields": [ { "Name": "resourceId" } ] }, "Results": [ "{\"resourceId\":\"ResourceId\"}", "{\"resourceId\":\"ResourceId\"}", "{\"resourceId\":\"ResourceId\"}", "{\"resourceId\":\"ResourceId\"}", "{\"resourceId\":\"ResourceId\"}", "{\"resourceId\":\"ResourceId\"}", "{\"resourceId\":\"ResourceId\"}" ] }
使用查询编辑器 (AWS CLI) 查询针对多个账户和区域的资源配置数据
  1. 打开命令提示符或终端窗口。

  2. 输入以下命令以查询您的资源配置数据。

    aws configservice select-aggregate-resource-config --expression "SELECT resourceId WHERE resourceType='AWS::EC2::Instance'" --configuration-aggregator-name my-aggregator

    根据您的查询,输出将如下所示。

    { "QueryInfo": { "SelectFields": [ { "Name": "resourceId" } ] }, "Results": [ "{\"resourceId\":\"ResourceId\"}", "{\"resourceId\":\"ResourceId\"}", "{\"resourceId\":\"ResourceId\"}", "{\"resourceId\":\"ResourceId\"}", "{\"resourceId\":\"ResourceId\"}", "{\"resourceId\":\"ResourceId\"}", "{\"resourceId\":\"ResourceId\"}" ] }
    注意

    在高级查询中使用AWS::IAM::UserAWS::IAM::GroupAWS::IAM::Role、、和AWS::IAM::Policy资源类型时,使用awsRegion = 'global'

保存查询

  1. 打开命令提示符或终端窗口。

  2. 输入以下命令以保存查询。

    aws configservice put-stored-query --stored-query "{\"QueryName\": \"cli-test\", \"Expression\": \"SELECT *\", \"Description\": \"cli test query\" }" --tags "[{ \"Key\": \"first-tag\", \"Value\": \"\" }, { \"Key\": \"second-tag\", \"Value\": \"non-empty-tag-value\" }]"
  3. 根据您的查询,输出将如下所示。

    { "QueryArn": "arn:aws:config:eu-central-1:Account ID:stored-query/cli-test/query-e65mijt4rmam5pab" }
    注意

    --tags 为可选项。传递标签时,list-stored-queriesget-stored-query 都不会返回保存的标签。必须使用 list-tag-for-resources 检索已保存查询的相关标签。

    在创建或更新查询时,--description 是可选的。

查看所有已保存的查询

  1. 输入以下命令以查看所有已保存查询的列表。

    aws configservice list-stored-queries
  2. 根据您的查询,输出将如下所示。

    { "StoredQueryMetadata": [ { "QueryId": "query-e65mijt4rmam5pab", "QueryArn": "arn:aws:config:eu-central-1:Account ID:stored-query/cli-test/query-e65mijt4rmam5pab", "QueryName": "cli-test" }, { "QueryId": "query-rltwlewlqfivadxq", "QueryArn": "arn:aws:config:eu-central-1:Account ID:stored-query/cli-test-2/query-rltwlewlqfivadxq", "QueryName": "cli-test-2", "Description": "cli test query" } ] } }

获取已保存的查询的详细信息

  1. 输入以下命令以获取已保存的特定查询的详细信息。

    aws configservice get-stored-query --query-name cli-test
  2. 根据您的查询,输出将如下所示。

    { "StoredQuery": { "QueryId": "query-e65mijt4rmam5pab", "QueryArn": "arn:aws:config:eu-central-1:Account ID:stored-query/cli-test/query-e65mijt4rmam5pab", "QueryName": "cli-test", "Description": "cli test query", "Expression": "SELECT *" } }

删除已保存的查询

  • 输入以下命令以删除您保存的查询。

    aws configservice delete-stored-query --query-name cli-test

如果成功,则命令会运行,而没有附加输出。