

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS Config (AWS CLI)용 SQL 쿼리 편집기를 사용한 쿼리
<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::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
  ```

명령이 성공하면 추가 출력이 표시되지 않습니다.