

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 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\$1ConfigRole](https://docs.aws.amazon.com/config/latest/developerguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AWS_ConfigRole)。

否則，您必須擁有 [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::Role`、 `AWS::IAM::Group`和 `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
  ```

若成功的話，命令會在沒有其他輸出的情況下執行。