

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

# 예약된 쿼리 생성
<a name="create-scheduled-query"></a>

CloudWatch Logs Insights 쿼리를 자동으로 실행하고 선택한 대상으로 결과를 전송하는 예약된 쿼리를 생성합니다.

## 사전 조건
<a name="create-scheduled-query-prerequisites"></a>

예약된 쿼리를 생성하기 전에 다음이 있는지 확인합니다.
+ **로그 그룹** - 분석하려는 데이터가 포함된 하나 이상의 로그 그룹
+ **실행 IAM 역할** - 다음 권한이 있는 IAM 역할:
  + `logs:StartQuery` - CloudWatch Logs Insights 쿼리를 시작할 수 있는 권한
  + `logs:GetQueryResults` - 쿼리 결과를 검색할 수 있는 권한
  + `logs:DescribeLogGroups` - 로그 그룹 정보에 액세스할 수 있는 권한. 이는 로그 그룹 검색을 위한 접두사 기반 로그 그룹에만 필요합니다.
+ **대상 권한** - 선택한 대상에 대한 추가 IAM 권한:
  + Amazon S3 대상의 경우: `s3:PutObject`
+ ** AWS CLI 및 API 사용의 경우** - CloudWatch Logs APIs 호출할 수 있는 권한이 있는 구성된 AWS 자격 증명

자세한 IAM 정책 예제는 섹션을 참조하세요[Amazon CloudWatch Logs용 Identity and Access Management](auth-and-access-control-cwl.md). 또한 계정당 1,000개의 예약된 쿼리만 가질 수 있습니다.

------
#### [ Console ]

**예약된 쿼리를 생성하려면(콘솔)**

1.  CloudWatch Logs 콘솔을 여시겠습니까? [https://us-east-1.console.aws.amazon.com/cloudwatch/homeregion=us-east-1\#logsV2:logs-insights](https://us-east-1.console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:logs-insights).

1. 탐색 창에서 **Logs Insights를** 선택합니다.

1. **예약된 쿼리 생성을** 선택합니다.

1. **쿼리 정의** 섹션에서 다음을 수행합니다.

   1. **쿼리 언어**의 경우 목록에서 사용할 쿼리 언어를 선택합니다.

   1. **쿼리 문자열**의 경우 상자에 CloudWatch Logs Insights 쿼리를 입력합니다.

   1. **로그 그룹의** 경우 목록에서 쿼리할 로그 그룹을 선택합니다.

1. **일정 설정** 섹션에서 다음을 수행합니다.

   1. **일정 표현**식에서 쿼리 실행 시기를 구성합니다. 사전 정의된 옵션 중에서 선택하거나 사용자 지정 cron 표현식을 입력합니다.

   1. **생성 시 유효**에서 일정이 활성화되는 시기를 지정합니다. YYYY/MM/DD 형식을 사용하여 즉시 또는 특정 날짜 및 시간에 시작하도록 선택합니다.

   1. **시간 범위에서** 각 쿼리 실행의 룩백 기간을 지정합니다. 쿼리할 실행 시간과 얼마나 멀어지는지 정의하는 지속 시간을 분 단위로 입력합니다.

   1. **무기한 계속**에서 일정이 종료되는 시간을 지정합니다. YYYY/MM/DD 형식을 사용하여 무기한 또는 특정 날짜 및 시간까지 실행하도록 선택합니다.

1. 콘솔에는 구성을 기반으로 다음 3개의 예약된 쿼리 실행이 표시되며 쿼리가 실행되는 정확한 날짜와 시간을 UTC 단위로 표시합니다.

1. **쿼리 결과를 S3에 게시 - 선택** 사항 섹션에서(S3 대상을 사용하는 경우):

   1. **S3 버킷**의 경우 대상 버킷이 동일한 계정에 있는 경우 **이** AWS 계정을 선택하고 버킷이 다른 계정에 있는 경우 **다른** AWS 계정을 선택하고 버킷 소유 계정의 계정 ID를 입력으로 제공합니다.

   1. **Amazon S3 URI**에 결과를 저장할 Amazon S3 버킷과 접두사(예: `s3://my-bucket/query-results/`)를 입력합니다. **이 계정을** 선택한 경우 ** Amazon S3 찾아보**기를 선택하여 기존 Amazon S3 위치를 탐색하고 선택할 수 있습니다.

   1. (선택 사항) **KMS 키 ARN**에 고객 관리형 AWS KMS 키의 ARN을 입력하여 SSE-KMS를 사용하여 쿼리 결과를 암호화합니다. 키는 대상 Amazon S3 버킷과 동일한 AWS 리전에 있어야 합니다.

1. **Amazon S3에 쿼리 결과를 게시하기 위한 IAM 역할** 섹션에서 다음 옵션 중 하나를 선택합니다.

   1. **기본 권한이 있는 새 역할 자동 생성을** 선택하여 CloudWatch Logs가 Amazon S3에 쿼리 결과를 전달하는 데 필요한 권한이 있는 IAM 역할을 자동으로 설정합니다.

   1. **기존 역할 사용을** 선택하여 CloudWatch Logs가 Amazon S3에 쿼리 결과를 전송하는 데 필요한 정책이 있는 기존 IAM 역할을 선택합니다. 검색 필드를 사용하여 목록에서 적절한 IAM 역할을 찾아 선택합니다.

1. **예약된 쿼리 실행을 위한 IAM 역할** 섹션에서 다음 옵션 중 하나를 선택합니다.

   1. **기본 권한이 있는 새 역할 자동 생성을** 선택하여 CloudWatch Logs가 예약된 쿼리를 실행하는 데 필요한 권한이 있는 IAM 역할을 자동으로 설정합니다.

   1. **기존 역할 사용을** 선택하여 CloudWatch Logs가 예약된 쿼리를 실행하는 데 필요한 정책이 있는 기존 IAM 역할을 선택합니다. 검색 필드를 사용하여 목록에서 적절한 IAM 역할을 찾아 선택합니다.

1. **일정 생성을** 선택하여 예약된 쿼리를 생성합니다.

------
#### [ AWS CLI ]

**예약된 쿼리를 생성하려면(AWS CLI)**
+ `create-scheduled-query` 명령을 사용하여 새 예약된 쿼리를 생성합니다.

  ```
  aws logs create-scheduled-query \
      --name "ErrorAnalysisQuery" \
      --query-language "CWLI" \
      --query-string "fields @timestamp, @message | filter @message like /ERROR/ | stats count() by bin(5m)" \
      --schedule-expression "cron(8 * * * ? *)" \
      --execution-role-arn "arn:aws:iam::123456789012:role/CloudWatchLogsScheduledQueryRole" \
      --log-group-identifiers "/aws/lambda/my-function" "/aws/apigateway/my-api" \
      --state "ENABLED"
  ```

------
#### [ API ]

**예약된 쿼리를 생성하려면(API)**
+ `CreateScheduledQuery` 작업을 사용하여 새 예약된 쿼리를 생성합니다. 다음 예제에서는 1시간마다 실행되는 예약된 쿼리를 생성합니다.

  ```
  {
      "name": "ErrorAnalysisQuery",
      "queryLanguage": "CWLI",
      "queryString": "fields @timestamp, @message | filter @message like /ERROR/ | stats count() by bin(5m)",
      "scheduleExpression": "cron(8 * * * ? *)",
      "executionRoleArn": "arn:aws:iam::123456789012:role/CloudWatchLogsScheduledQueryRole",
      "logGroupIdentifiers": ["/aws/lambda/my-function", "/aws/apigateway/my-api"],
      "state": "ENABLED"
  }
  ```

------

예약된 쿼리를 생성한 후 **예약된 쿼리** 페이지에서 ListScheduledQueries API를 사용하여 해당 쿼리를 보고 관리할 수 있습니다.이 API에는 이름, 생성 날짜, 마지막 실행 상태, 마지막으로 트리거된 시간 및 반복 빈도와 함께 예약된 모든 쿼리가 표시됩니다.