

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

# 使用 SQL 查询编辑器查询 AWS Config (AWS CLI)
<a name="query-using-sql-editor-cli"></a>

 AWS CLI 是一款用于管理您的 AWS 服务的统一工具。只需下载和配置一个工具，您就可以从命令行控制多项 AWS 服务，并使用脚本自动执行这些服务。有关 AWS CLI 和 AWS CLI 工具安装说明的更多信息，请参阅《*AWS Command Line Interface 用户指南》*中的以下内容。
+ [AWS Command Line Interface 用户指南](https://docs.aws.amazon.com/cli/latest/userguide/)
+ [开始设置 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html) 

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

## 注意事项
<a name="query-using-sql-editor-cli-considerations"></a>

**先决条件**

如果您使用的是以下 AWS 托管策略之一，则您将拥有运行和保存查询所需的权限：[AWSServiceRoleForConfig](https://docs.aws.amazon.com/config/latest/developerguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AWSServiceRoleForConfig)（服务相关角色）或 [AWS\$1Con](https://docs.aws.amazon.com/config/latest/developerguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AWS_ConfigRole) fiGrole。

否则，您必须拥有[AWSConfigUserAccess](https://docs.aws.amazon.com/config/latest/developerguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AWSConfigUserAccess) AWS 托管策略中包含的权限。

**您可以查询的属性列表**

中提供了更新的属性及其数据类型列表[GitHub](https://github.com/awslabs/aws-config-resource-schema)。

**高级查询和聚合器**

要在聚合器上运行查询，请创建聚合器。有关更多信息，请参阅 [为 AWS Config 创建聚合器](aggregated-create.md)

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

## 查询资源配置数据
<a name="query-resource-configuration-data"></a>

**使用查询编辑器（AWS CLI）查询针对单个账户和区域的资源配置数据**

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

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

   ```
   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. 打开命令提示符或终端窗口。

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

   ```
   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::User``AWS::IAM::Group`、`AWS::IAM::Role` 和 `AWS::IAM::Policy` 资源类型时，请使用。`awsRegion = 'global'`

## 保存查询
<a name="put-saved-query"></a>

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

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

   ```
   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\" }]"
   ```

1. 根据您的查询，输出将如下所示。

   ```
   {
       "QueryArn": "arn:aws:config:eu-central-1:Account ID:stored-query/cli-test/query-e65mijt4rmam5pab"
   }
   ```
**注意**  
`--tags` 为可选项。传递标签时，`list-stored-queries` 或 `get-stored-query` 都不会返回保存的标签。必须使用 `list-tag-for-resources` 检索已保存查询的相关标签。  
在创建或更新查询时，`--description` 是可选的。

## 查看所有已保存的查询
<a name="list-saved-queries"></a>

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

   ```
   aws configservice list-stored-queries
   ```

1. 根据您的查询，输出将如下所示。

   ```
   {
       "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"
           }
       ]
   }
   }
   ```

## 获取已保存的查询的详细信息
<a name="get-saved-query"></a>

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

   ```
   aws configservice get-stored-query --query-name cli-test
   ```

1. 根据您的查询，输出将如下所示。

   ```
   {
       "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 *"
       }
   }
   ```

## 删除已保存的查询
<a name="delete-saved-query"></a>
+ 输入以下命令以删除已保存的查询。

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

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