

# CloudWatch 및 EventBridge를 사용하여 쿼리 모니터링 및 비용 제어
<a name="workgroups-control-limits"></a>

작업 그룹에서는 쿼리당 또는 작업 그룹당 데이터 사용량 제어 한도를 설정하고, 이러한 한도가 초과될 때 경보를 설정할 수 있으며, CloudWatch에 쿼리 지표를 게시할 수 있습니다.

각 작업 그룹에서 다음을 수행할 수 있습니다.
+ 쿼리당 그리고 작업 그룹당 **데이터 사용량 제어**를 구성하고, 쿼리가 임계값을 위반할 경우 수행할 작업을 설정합니다.
+ 쿼리 지표를 보고 분석하며 CloudWatch에 게시합니다. 콘솔에서 작업그룹을 만들 경우 CloudWatch에 지표를 게시하는 설정이 자동으로 선택됩니다. API 작업을 사용할 경우 [지표 게시를 활성화](athena-cloudwatch-metrics-enable.md)해야 합니다. 지표가 게시되면 **작업 그룹** 패널의 **지표** 탭 아래에 표시됩니다. 지표는 기본 작업 그룹에 대해 기본적으로 비활성화됩니다.

## 비디오
<a name="athena-cloudwatch-metrics-video"></a>

다음 동영상은 CloudWatch에서 사용자 지정 대시보드를 생성하고 지표에 대한 경보 및 트리거를 설정하는 방법을 보여 줍니다. Athena 콘솔에서 사전 입력된 대시보드를 직접 사용해 이러한 쿼리 지표를 이용할 수 있습니다.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/x1V_lhkdKCg/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/x1V_lhkdKCg)


**Topics**
+ [비디오](#athena-cloudwatch-metrics-video)
+ [쿼리 지표 활성화](athena-cloudwatch-metrics-enable.md)
+ [CloudWatch를 사용하여 쿼리 지표 모니터링](query-metrics-viewing.md)
+ [CloudWatch를 사용하여 사용량 지표 모니터링](monitoring-athena-usage-metrics.md)
+ [EventBridge를 사용하여 쿼리 이벤트 모니터링](athena-events.md)
+ [데이터 사용량 제어 구성](workgroups-setting-control-limits-cloudwatch.md)

# Athena에서 CloudWatch 쿼리 지표 활성화
<a name="athena-cloudwatch-metrics-enable"></a>

콘솔에서 작업그룹을 만들 경우 CloudWatch에 쿼리 지표를 게시하는 설정이 기본적으로 선택됩니다.

**Athena 콘솔에서 작업 그룹에 대해 쿼리 지표를 활성화 또는 비활성화하려면**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)에서 Athena 콘솔을 엽니다.

1. 콘솔 탐색 창이 표시되지 않으면 왼쪽의 확장 메뉴를 선택합니다.  
![\[확장 메뉴를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/nav-pane-expansion.png)

1. 탐색 창에서 **작업 그룹(Workgroups)**을 선택합니다.

1. 수정할 작업 그룹의 링크를 선택합니다.

1. 작업 그룹에 대한 세부 정보 페이지에서 **편집(Edit)**을 선택합니다.

1. **설정(Settings)** 섹션에서 **AWS CloudWatch에 쿼리 지표 게시(Publish query metrics to CloudWatch)**를 선택하거나 선택 취소합니다.

API 작업, 명령줄 인터페이스 또는 JDBC 드라이버가 있는 클라이언트 애플리케이션을 사용하여 작업 그룹을 생성하고 쿼리 지표 게시를 활성화하는 경우 [WorkGroupConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroupConfiguration.html)에서 `PublishCloudWatchMetricsEnabled`를 `true`로 설정합니다. 다음 예제는 지표 구성만 보여 주고 다른 구성은 생략합니다.

```
"WorkGroupConfiguration": { 
      "PublishCloudWatchMetricsEnabled": "true"
     ....
     }
```

# CloudWatch를 사용하여 Athena 쿼리 지표 모니터링
<a name="query-metrics-viewing"></a>

[CloudWatch에 쿼리 지표 게시](athena-cloudwatch-metrics-enable.md) 옵션을 선택하면 Athena는 쿼리 관련 지표를 Amazon CloudWatch에 게시합니다. 사용자 지정 대시보드를 만들거나, CloudWatch의 지표에 대해 경보 및 트리거를 설정하거나, Athena 콘솔에서 사전 입력된 대시보드를 직접 사용할 수 있습니다.

작업 그룹의 쿼리에 대해 쿼리 지표를 활성화하면 Athena 콘솔에서 각 작업 그룹에 대한 **작업 그룹** 패널의 **지표** 탭에 지표가 표시됩니다.

Athena는 다음의 지표를 CloudWatch 콘솔에 게시합니다.
+ `DPUAllocated` - 쿼리를 실행하기 위해 용량 예약에 프로비저닝된 총 데이터 처리 단위(DPU) 수입니다.
+ `DPUConsumed` - 예약에서 특정 시간에 `RUNNING` 상태의 쿼리가 소비하는 DPU 수입니다. 작업 그룹이 용량 예약과 연결되어 있고 예약과 연결된 모든 작업 그룹을 포함하는 경우에만 생성되는 지표입니다.
+ `DPUCount` - 쿼리가 소비하는 최대 DPU 수로, 쿼리가 완료될 때 정확히 한 번 게시됩니다.
+ `EngineExecutionTime` - 쿼리를 실행하는 데 걸린 시간(밀리초)입니다.
+ `ProcessedBytes` - DML 쿼리당 Athena가 스캔한 바이트 수입니다.
+ `QueryPlanningTime` - Athena가 쿼리 처리 흐름을 계획하는 데 걸린 시간(밀리초)입니다.
+ `QueryQueueTime` - 쿼리가 리소스를 기다리면서 쿼리 대기열에 있던 시간(밀리초)입니다.
+ `ServicePreProcessingTime` - Athena가 쿼리 엔진에 쿼리를 제출하기 전에 쿼리를 사전 처리하는 데 걸린 시간(밀리초)입니다.
+ `ServiceProcessingTime` - 쿼리 엔진이 쿼리 실행을 완료한 후 Athena가 쿼리 결과를 처리하는 데 걸린 시간(밀리초)입니다.
+ `TotalExecutionTime` - Athena가 DDL 또는 DML 쿼리를 실행하는 데 걸린 시간(밀리초)입니다.

자세한 설명은 이 문서 뒷부분의 [Athena의 CloudWatch 지표 및 차원 목록](#athena-cloudwatch-metrics-table) 섹션을 참조하세요.

이러한 지표에는 다음과 같은 차원이 있습니다.
+ `CapacityReservation` - 해당하는 경우 쿼리를 실행하는 데 사용된 용량 예약의 이름입니다.
+ `QueryState` - `SUCCEEDED`, `FAILED` 또는 `CANCELED`
+ `QueryType` - `DML`, `DDL` 또는 `UTILITY`
+ `WorkGroup` - 작업 그룹의 이름입니다.

Athena는 다음의 지표를 `AmazonAthenaForApacheSpark` 네임스페이스 아래 CloudWatch 콘솔에 게시합니다.
+ `DPUCount` - 세션 중에 계산을 실행하는 데 사용된 DPU 수입니다.

이 지표에는 다음과 같은 차원이 있습니다.
+ `SessionId` - 계산이 제출되는 세션의 ID입니다.
+ `WorkGroup` - 작업 그룹의 이름입니다.

자세한 내용은 이 주제의 후반부에서 [Athena의 CloudWatch 지표 및 차원 목록](#athena-cloudwatch-metrics-table) 단원을 참조하세요. Athena 사용량 지표에 대한 자세한 내용은 [CloudWatch를 사용하여 Athena 사용량 지표 모니터링](monitoring-athena-usage-metrics.md) 섹션을 참조하세요.

Athena 콘솔 또는 CloudWatch 콘솔에서 쿼리 지표를 볼 수 있습니다.

## Athena 콘솔에서 쿼리 지표 보기
<a name="query-metrics-viewing-athena-console"></a>

**Athena 콘솔에서 작업 그룹에 대한 쿼리 지표를 보려면**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)에서 Athena 콘솔을 엽니다.

1. 콘솔 탐색 창이 표시되지 않으면 왼쪽의 확장 메뉴를 선택합니다.  
![\[확장 메뉴를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/nav-pane-expansion.png)

1. 탐색 창에서 **작업 그룹(Workgroups)**을 선택합니다.

1. 목록에서 원하는 작업 그룹을 선택한 다음 **지표(Metrics)** 탭을 선택합니다.

   지표 대시보드가 표시됩니다.
**참고**  
작업 그룹에 대한 지표를 최근에 활성화했거나 최근 쿼리 활동이 없었다면 대시보드의 그래프가 비어 있을 수 있습니다. 다음 단계에서 지정하는 간격마다 CloudWatch에서 쿼리 활동을 검색합니다.

1. **지표(Metrics)** 섹션에서 Athena가 CloudWatch에서 쿼리 활동을 가져오는 데 사용할 지표 간격을 선택하거나, 사용자 지정 간격을 지정합니다.  
![\[Athena 콘솔에서 작업 그룹에 대한 지표 검색 간격 지정.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/wg-custom-interval.png)

1. 표시된 지표를 새로 고치려면 새로 고침 아이콘을 선택합니다.  
![\[새로 고침 아이콘을 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/wg-refresh-metrics.png)

1. 새로 고침 아이콘 옆에 있는 화살표를 클릭하여 지표 표시를 업데이트할 빈도를 선택합니다.  
![\[Athena 콘솔에서 작업 그룹 지표를 표시하기 위한 새로 고침 간격 선택.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/wg-choose-refresh-interval.png)

## CloudWatch 콘솔에서 쿼리 지표 보기
<a name="query-metrics-viewing-cw-console"></a>

**Amazon CloudWatch 콘솔에서 지표를 보려면**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 탐색 창에서 **지표**, **모든 지표**를 선택합니다.

1. **AWS/Athena** 네임스페이스를 선택합니다.

## AWS CLI를 사용하여 쿼리 지표 보기
<a name="query-metrics-viewing-cli"></a>

**AWS CLI를 사용하여 지표를 보려면**
+ 다음 중 하나를 수행하세요.
  + Athena에 대한 지표를 나열하려면 명령 프롬프트를 열고 다음 명령을 사용합니다.

    ```
    aws cloudwatch list-metrics --namespace "AWS/Athena"
    ```
  + 사용 가능한 모든 지표의 목록을 보려면 다음 명령을 사용합니다.

    ```
    aws cloudwatch list-metrics"
    ```

## Athena의 CloudWatch 지표 및 차원 목록
<a name="athena-cloudwatch-metrics-table"></a>

Athena에서 CloudWatch 지표를 활성화했다면 다음 지표가 작업 그룹별로 CloudWatch로 전송됩니다. 다음 지표에서 `AWS/Athena` 네임스페이스를 사용합니다.


| 지표 이름 | 설명 | 
| --- | --- | 
| DPUAllocated |  쿼리를 실행하기 위해 용량 예약에 프로비저닝된 총 데이터 처리 단위(DPU) 수입니다.  | 
| DPUConsumed | 예약에서 특정 시간에 RUNNING 상태의 쿼리가 소비하는 DPU 수입니다. 이 지표는 작업 그룹이 용량 예약과 연결되어 있고 예약과 연결된 모든 작업 그룹을 포함하는 경우에만 생성됩니다. 작업 그룹을 한 예약에서 다른 예약으로 이동하면 해당 작업 그룹이 첫 번째 예약에 속했던 시점의 데이터가 지표에 포함됩니다. 용량 예약에 대한 자세한 내용은 [쿼리 처리 용량 관리](capacity-management.md) 섹션을 참조하세요. | 
| DPUCount | 쿼리가 소비하는 최대 DPU 수로, 쿼리가 완료될 때 정확히 한 번 게시됩니다. 이 지표는 용량 예약에 연결된 작업 그룹에 대해서만 생성됩니다. | 
| EngineExecutionTime |  쿼리를 실행하는 데 걸린 시간(밀리초)입니다.  | 
| ProcessedBytes |  DML 쿼리당 Athena가 스캔한 바이트 수입니다. 취소된 쿼리의 경우(한도에 다다른 경우, 쿼리가 사용자에 의해 또는 자동으로 취소됨), 취소 시간 이전에 스캔한 데이터의 양을 포함합니다. DDL 쿼리에 대해서는 이 지표가 보고되지 않습니다.  | 
| QueryPlanningTime | Athena가 쿼리 처리 흐름을 계획하는 데 걸린 시간(밀리초)입니다. 여기에는 데이터 소스로부터 테이블 파티션을 검색하는 데 소요된 시간이 포함됩니다. 쿼리 엔진은 쿼리 계획을 수행하기 때문에 쿼리 계획 시간은 EngineExecutionTime의 하위 집합입니다. | 
| QueryQueueTime | 쿼리가 리소스를 기다리면서 쿼리 대기열에 있던 시간(밀리초) 입니다. 일시적인 오류가 발생하면 쿼리가 자동으로 대기열에 다시 추가될 수 있습니다. | 
| ServicePreProcessingTime | Athena가 쿼리 엔진에 쿼리를 제출하기 전에 쿼리를 사전 처리하는 데 걸린 시간(밀리초)입니다. | 
| ServiceProcessingTime | 쿼리 엔진이 쿼리 실행을 완료한 후 Athena가 쿼리 결과를 처리하는 데 걸린 시간(밀리초)입니다. | 
| TotalExecutionTime | Athena가 DDL 또는 DML 쿼리를 실행하는 데 걸린 시간(밀리초)입니다. TotalExecutionTime에는 QueryQueueTime, QueryPlanningTime, EngineExecutionTime 및 ServiceProcessingTime이 포함됩니다.. | 

Athena의 이 지표에는 다음과 같은 차원이 있습니다.


| 차원 | 설명 | 
| --- | --- | 
| CapacityReservation |  해당하는 경우 쿼리를 실행하는 데 사용된 용량 예약의 이름입니다. 용량 예약이 사용되지 않으면 이 차원은 데이터를 반환하지 않습니다.  | 
| QueryState |  쿼리 상태입니다. 유효한 통계: SUCCEEDED, FAILED 또는 CANCELED.  | 
| QueryType |  쿼리 유형입니다. 유효한 통계: `DDL`, `DML` 또는 `UTILITY`. 실행된 쿼리 문의 유형입니다. `DDL`은 데이터 정의 언어(DDL) 쿼리 문을 나타냅니다. `DML`은 데이터 조작 언어(DML) 쿼리 문을 나타냅니다(예: `CREATE TABLE AS SELECT`). `UTILITY`는 DDL 및 DML 이외의 쿼리 문(예:`SHOW CREATE TABLE` 또는 `DESCRIBE TABLE`)을 나타냅니다.  | 
| WorkGroup |  작업 그룹의 이름입니다.  | 

# CloudWatch를 사용하여 Athena 사용량 지표 모니터링
<a name="monitoring-athena-usage-metrics"></a>

CloudWatch 사용량 지표를 사용하여 CloudWatch 그래프 및 대시보드에서 현재 서비스 사용량을 표시하여 계정에서 리소스가 어떻게 사용되고 있는지 확인할 수 있습니다.

Athena의 경우 사용량 가용성 지표는 Athena의 AWS 서비스 할당량에 해당합니다. 사용량이 서비스 할당량에 가까워지면 경고하는 경보를 구성할 수 있습니다. Athena 서비스 할당량에 대한 자세한 내용은 [Service Quotas](service-limits.md) 섹션을 참조하세요. AWS 사용량 지표에 대한 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [AWS 사용량 지표](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Service-Quota-Integration.html)를 참조하세요.

Athena는 `AWS/Usage` 네임스페이스에 다음 지표를 게시합니다.


|  지표 이름  |  설명  | 
| --- | --- | 
|  `ResourceCount`  |  쿼리 유형(DML 또는 DDL)으로 구분된 계정당 AWS 리전에 따라 대기 중인 모든 쿼리와 실행 쿼리의 합계입니다. Maximum은 이 지표에 가장 유용한 통계입니다. 이 지표는 1분마다 주기적으로 게시됩니다. 쿼리를 실행하지 않는 경우 이 지표는 아무 것도 보고하지 않습니다(0도 보고하지 않음). 이 지표는 지표가 계산될 때 활성 쿼리가 실행 중인 경우에만 게시됩니다.  | 

다음 차원은 Athena에 의해 게시되는 사용량 지표를 구체화하는 데 사용됩니다.


|  차원  |  설명  | 
| --- | --- | 
|  `Service`  |  리소스가 포함된 AWS 서비스의 이름 Athena의 경우 이 차원의 값은 `Athena`입니다.  | 
|  `Resource`  |  실행 중인 리소스의 유형입니다. Athena 쿼리 사용량에 대한 리소스 값은 `ActiveQueryCount`입니다.  | 
|  `Type`  |  보고되는 엔터티의 유형입니다. 현재 Athena 사용량 지표에 대한 유일한 유효 값은 `Resource`입니다.  | 
|  `Class`  |  추적 중인 리소스의 클래스입니다. Athena의 경우, `Class`는 `DML` 또는 `DDL`이 될 수 있습니다.  | 

## CloudWatch 콘솔에서 Athena 리소스 사용량 지표 보기
<a name="monitoring-athena-usage-metrics-cw-console"></a>

CloudWatch 콘솔을 사용하여 Athena 사용량 지표의 그래프를 표시하고 사용량이 서비스 할당량에 가까워지면 경고하는 경보를 구성할 수 있습니다.

**Athena 리소스 사용량 지표를 보려면**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 탐색 창에서 **지표**, **모든 지표**를 선택합니다.

1. **사용량**(Usage)을 선택한 다음 **AWS 리소스별**(By Resource)을 선택합니다.

   서비스 할당량 사용량 지표 목록이 나타납니다.

1. **Athena** 및 **ActiveQueryCount** 옆에 있는 확인란을 선택합니다.

1. **그래프로 표시된 지표** 탭을 선택합니다.

   위의 그래프는 AWS 리소스의 현재 사용량을 표시합니다.

그래프에 서비스 할당량을 추가하고 서비스 할당량에 가까워지면 알려주는 경보를 설정하는 데 대한 자세한 내용은 *Amazon CloudWatch 사용 설명서*에서 [서비스 할당량 시각화 및 경보 설정](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Quotas-Visualize-Alarms.html)을 참조하세요. 작업 그룹당 사용량 한도 설정에 대한 자세한 내용은 [쿼리당 및 작업 그룹당 데이터 사용량 제어 구성](workgroups-setting-control-limits-cloudwatch.md) 섹션을 참조하세요.

# EventBridge를 사용하여 Athena 쿼리 이벤트 모니터링
<a name="athena-events"></a>

Amazon EventBridge와 함께 Amazon Athena를 사용하여 쿼리 상태에 대한 실시간 알림을 받을 수 있습니다. 사용자가 제출한 쿼리의 상태가 전환되면 Athena는 해당 쿼리 상태 전환에 대한 정보를 포함하는 이벤트를 EventBridge에 게시합니다. 원하는 이벤트에 대한 간단한 규칙을 작성하고 규칙과 일치하는 이벤트 발생 시 자동으로 작업을 수행하도록 할 수 있습니다. 예를 들어 쿼리가 종료 상태에 도달할 때 AWS Lambda 함수를 호출하는 규칙을 만들 수 있습니다. 이벤트는 최선의 작업을 기반으로 발생됩니다.

Athena에 대한 이벤트 규칙을 생성하기 전에 다음을 수행해야 합니다.
+ Eventbridge의 이벤트, 규칙, 대상을 숙지해야 합니다. 자세한 내용은 [Amazon EventBridge란 무엇입니까?](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)를 참조하십시오. 규칙을 설정하는 방법에 대한 자세한 내용은 [Amazon EventBridge 시작하기](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html)를 참조하세요.
+ 이벤트 규칙에 사용할 대상을 만듭니다.

**참고**  
Athena는 현재 한 가지 유형의 이벤트인 Athena 쿼리 상태 변경을 제공하지만 다른 이벤트 유형 및 세부 정보를 추가할 수도 있습니다. 프로그래밍 방식으로 이벤트 JSON 데이터를 역직렬화하는 경우, 추가 속성이 추가되었을 때 알 수 없는 속성을 처리할 수 있도록 애플리케이션이 준비되어야 합니다.

## Athena 이벤트 형식
<a name="athena-events-pattern"></a>

다음은 Amazon Athena 이벤트의 기본 패턴입니다.

```
{
    "source":[
        "aws.athena"
    ],
    "detail-type":[
        "Athena Query State Change"
    ],
    "detail":{
        "currentState":[
            "SUCCEEDED"
        ]
    }
}
```

## Athena 쿼리 상태 변경 이벤트
<a name="athena-events-athena-query-state-change"></a>

다음 예제에서는 `currentState` 값이 `SUCCEEDED`인 Athena 쿼리 상태 변경 이벤트를 보여 줍니다.

```
{
    "version":"0",
    "id":"abcdef00-1234-5678-9abc-def012345678",
    "detail-type":"Athena Query State Change",
    "source":"aws.athena",
    "account":"123456789012",
    "time":"2019-10-06T09:30:10Z",
    "region":"us-east-1",
    "resources":[

    ],
    "detail":{
        "versionId":"0",
        "currentState":"SUCCEEDED",
        "previousState":"RUNNING",
        "statementType":"DDL",
        "queryExecutionId":"01234567-0123-0123-0123-012345678901",
        "workgroupName":"primary",
        "sequenceNumber":"3"
    }
}
```

다음 예제에서는 `currentState` 값이 `FAILED`인 Athena 쿼리 상태 변경 이벤트를 보여 줍니다. `athenaError` 블록은 `currentState`가 `FAILED`인 경우에만 나타납니다. `errorCategory` 및 `errorType`에 대한 값 관련 내용은 [Athena 오류 카탈로그](error-reference.md) 단원을 참조하세요.

```
{
    "version":"0",
    "id":"abcdef00-1234-5678-9abc-def012345678",
    "detail-type":"Athena Query State Change",
    "source":"aws.athena",
    "account":"123456789012",
    "time":"2019-10-06T09:30:10Z",
    "region":"us-east-1",
    "resources":[ 
    ],
    "detail":{
        "athenaError": {
            "errorCategory": 2.0, //Value depends on nature of exception
            "errorType": 1306.0, //Type depends on nature of exception
            "errorMessage": "Amazon S3 bucket not found", //Message depends on nature of exception
            "retryable":false //Retryable value depends on nature of exception
        },
        "versionId":"0",
        "currentState": "FAILED",
        "previousState": "RUNNING",
        "statementType":"DML",
        "queryExecutionId":"01234567-0123-0123-0123-012345678901",
        "workgroupName":"primary",
        "sequenceNumber":"3"
    }
}
```

### 출력 속성
<a name="athena-events-query-state-change-output-properties"></a>

JSON 출력에는 다음 속성이 포함됩니다.


****  

| 속성 | 설명 | 
| --- | --- | 
| athenaError | currentState가 FAILED인 경우에만 나타납니다. 오류 범주, 오류 유형, 오류 메시지, 오류를 일으킨 작업을 재시도할 수 있는지 여부 등 발생한 오류에 대한 정보가 포함되어 있습니다. 이러한 각 필드의 값은 오류의 특성에 따라 달라집니다. errorCategory 및 errorType에 대한 값 관련 내용은 [Athena 오류 카탈로그](error-reference.md) 단원을 참조하세요. | 
| versionId | 세부 정보 객체 스키마의 버전 번호입니다. | 
| currentState | 이벤트 발생 시 쿼리가 다른 상태로 전환됩니다. | 
| previousState | 이벤트 발생 시 쿼리가 다른 상태에서 전환됩니다. | 
| statementType | 실행된 쿼리 문의 유형입니다. | 
| queryExecutionId | 실행된 쿼리에 대한 고유 식별자입니다. | 
| workgroupName | 쿼리가 실행된 작업 그룹의 이름입니다. | 
| sequenceNumber | 실행된 단일 쿼리와 관련된 수신 이벤트의 중복 제거 및 순서 지정을 수행할 수 있는 단순 증가 수치입니다. 동일한 상태 전환에 대해 중복 이벤트가 게시되면 sequenceNumber 값은 동일합니다. 드물지만 다시 대기열에 올리는 쿼리와 같이 쿼리에 상태 전환이 두 번 이상 발생하는 경우 sequenceNumber를 사용하여 동일한 currentState 및 previousState 값을 가진 이벤트의 순서를 지정할 수 있습니다. | 

## 예제
<a name="athena-events-examples"></a>

다음 예제에서는 구독한 Amazon SNS 주제에 이벤트를 게시합니다. Athena가 쿼리되면 이메일을 받게 됩니다. 이 예제에서는 Amazon SNS 주제가 존재하고 사용자가 이를 구독했다고 가정합니다.

**Amazon SNS 주제에 Athena 이벤트를 게시하려면**

1. Amazon SNS 주제의 대상을 만듭니다. 다음 예제와 같이 Amazon SNS 주제에 게시할 수 있는 `events.amazonaws.com` 권한을 EventBridge 이벤트 서비스 보안 주체에 부여합니다.

   ```
   {
       "Effect":"Allow",
       "Principal":{
           "Service":"events.amazonaws.com"
       },
       "Action":"sns:Publish",
       "Resource":"arn:aws:sns:us-east-1:111111111111:your-sns-topic"
   }
   ```

1. 다음 예제와 같이 AWS CLI `events put-rule` 명령을 사용하여 Athena 이벤트에 대한 규칙을 만듭니다.

   ```
   aws events put-rule --name {ruleName} --event-pattern '{"source": ["aws.athena"]}'
   ```

1. 다음 예제와 같이 AWS CLI `events put-targets` 명령을 사용하여 Amazon SNS 주제 대상을 규칙에 연결합니다.

   ```
   aws events put-targets --rule {ruleName} --targets Id=1,Arn=arn:aws:sns:us-east-1:111111111111:your-sns-topic
   ```

1. Athena를 쿼리하고 호출되는 대상을 관찰합니다. Amazon SNS 주제에서 해당 이메일을 수신해야 합니다.

## Amazon Athena에서 AWS User Notifications 사용
<a name="monitoring-user-notifications"></a>

[AWS User Notifications](https://docs.aws.amazon.com/notifications/latest/userguide/what-is.html)을 사용하여 Amazon Athena 이벤트에 대한 알림을 받을 전송 채널을 설정할 수 있습니다. 이벤트가 지정한 규칙과 일치하면 알림을 받습니다. 이메일, [채팅 애플리케이션의 Amazon Q Developer](https://docs.aws.amazon.com/chatbot/latest/adminguide/what-is.html) 채팅 알림 또는 [AWS Console Mobile Application](https://docs.aws.amazon.com/consolemobileapp/latest/userguide/what-is-consolemobileapp.html) 푸시 알림을 비롯한 여러 채널을 통해 이벤트에 대한 알림을 받을 수 있습니다. [콘솔 알림 센터](https://console.aws.amazon.com/notifications/)에서도 알림을 볼 수 있습니다. User Notifications은 집계를 지원하므로 특정 이벤트 중에 받는 알림 수를 줄일 수 있습니다.

자세한 내용은 [https://docs.aws.amazon.com/notifications/latest/userguide/what-is.html](https://docs.aws.amazon.com/notifications/latest/userguide/what-is.html)를 참조하세요.

# 쿼리당 및 작업 그룹당 데이터 사용량 제어 구성
<a name="workgroups-setting-control-limits-cloudwatch"></a>

 Athena에서는 쿼리당 한도와 작업 그룹당 한도의 두 가지 비용 관리를 설정할 수 있습니다. 각 작업 그룹에 대해 쿼리당 한도 한 개와 작업 그룹당 한도 여러 개를 설정할 수 있습니다.
+ **쿼리당 제어 한도**는 쿼리당 스캔된 데이터의 총량을 지정합니다. 작업 그룹에서 실행하는 쿼리가 이 한도를 초과할 경우 쿼리가 취소됩니다. 한 작업 그룹에서 쿼리당 제어 한도를 한 개만 생성할 수 있으며 이 한도는 해당 작업 그룹에서 실행되는 각 쿼리에 적용됩니다. 이 한도를 변경해야 할 경우 수정할 수 있습니다. 자세한 방법은 [쿼리당 데이터 사용량 제어를 생성하려면](#configure-control-limit-per-query)을 참조하세요.
+ **작업 그룹 전역 데이터 사용량 제어 한도**는 이 작업 그룹에서 실행하는 모든 쿼리에 대해 지정된 시간 동안 스캔된 데이터의 총량을 지정합니다. 작업 그룹당 한도를 여러 개 만들 수 있습니다. 작업 그룹 전역 쿼리 한도를 사용하여 해당 작업 그룹에서 실행 중인 쿼리별로 스캔된 데이터의 시간별 또는 일간 집계에 대해 임계값을 여러 개 설정할 수 있습니다.

  스캔된 데이터의 집계량이 임계값을 초과할 경우 Amazon SNS 주제에 알림을 푸시할 수 있습니다. 이렇게 하려면 한도를 위반할 때 관리자에게 알리도록 Athena 콘솔에서 Amazon SNS 경보 및 작업을 구성합니다. 자세한 방법은 [작업 그룹당 데이터 사용량 제어를 생성하려면](#configure-control-limit-per-workgroup)을 참조하세요. CloudWatch 콘솔에서 Athena가 게시하는 모든 지표에 대해 경보 및 조치를 생성할 수도 있습니다. 예를 들어 실패한 쿼리의 수에 대한 경고를 설정할 수 있습니다. 이 경고는 쿼리 수가 특정 임계값에 이를 경우 관리자에게 이메일을 보내게 할 수 있습니다. 한도를 초과할 경우 조치는 지정된 사용자에게 Amazon SNS 경보 알림을 보냅니다.

  수행할 수 있는 기타 조치:
  + Lambda 함수를 간접적으로 호출합니다. 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*에서 [Amazon SNS 알림을 사용하여 Lambda 함수 호출](https://docs.aws.amazon.com/sns/latest/dg/sns-lambda-as-subscriber.html) 단원을 참조하세요.
  + 작업 그룹을 비활성화하여 쿼리가 더 이상 실행되지 않도록 합니다. 단계는 [작업 그룹 활성화 또는 비활성화](workgroups-enabled-disabled.md)를 참조하세요.

쿼리당 한도 및 작업 그룹당 한도는 서로 독립적입니다. 지정된 조치는 한도가 초과될 때마다 수행됩니다. 둘 이상의 사용자가 동일한 작업 그룹에서 동시에 쿼리를 실행할 경우, 각 쿼리는 지정된 한도를 초과하지 않지만, 스캔한 데이터의 총합은 작업 그룹당 데이터 사용 한도를 초과할 수 있습니다. 이 경우 Amazon SNS 경보가 사용자에게 전송됩니다.

## 쿼리당 데이터 사용량 제어 생성
<a name="create-a-per-query-data-usage-control"></a><a name="configure-control-limit-per-query"></a>

**쿼리당 데이터 사용량 제어를 생성하려면**

쿼리당 제어 한도는 쿼리당 스캔된 데이터의 총량을 지정합니다. 작업 그룹에서 실행하는 쿼리가 이 한도를 초과할 경우 쿼리가 취소됩니다. 취소된 쿼리는 [Amazon Athena 요금](https://aws.amazon.com/athena/pricing/)에 따라 요금이 청구됩니다.
**참고**  
취소되거나 실패한 쿼리의 경우 Athena가 Amazon S3에 일부 결과를 이미 썼을 수 있습니다. 이 경우 Athena는 결과가 저장된 Amazon S3 접두사에서 일부 결과를 삭제하지 않습니다. 일부 결과를 포함한 Amazon S3 접두사는 제거해야 합니다. Athena는 Amazon S3 멀티파트 업로드를 사용하여 Amazon S3에 데이터를 씁니다. 쿼리가 실패할 경우 멀티파트 업로드를 종료하도록 버킷 수명 주기 정책을 설정할 것을 권장합니다. 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [버킷 수명 주기 정책을 사용한 미완료 멀티파트 업로드 중단](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)을 참조하세요.
특정 조건에서 Athena는 자동으로 쿼리 실행을 다시 시도할 수 있습니다. 대부분의 경우 이러한 쿼리는 성공적으로 완료되며 쿼리 ID는 `Completed`로 표시됩니다. 이러한 쿼리는 초기 시도 중 부분적인 결과를 기록했을 수 있으며 불완전한 멀티파트 업로드를 생성할 수 있습니다.

한 작업 그룹에서 쿼리당 제어 한도를 한 개만 생성할 수 있으며 이 한도는 해당 작업 그룹에서 실행되는 각 쿼리에 적용됩니다. 이 한도를 변경해야 할 경우 수정할 수 있습니다.

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)에서 Athena 콘솔을 엽니다.

1. 탐색 창에서 **작업 그룹**(Workgroups)을 선택합니다.

1. 목록에서 작업 그룹을 선택합니다.

1. **실행 제어** 탭에서 **제어 편집**을 선택하세요.

1. **데이터 스캔 제한** 값을 편집하세요.
   + 10MB(최소)\$17EB(최대) 범위의 값을 지정하세요.
   + 드롭다운 목록에서 단위 값(예: **킬로바이트 KB** 또는 **엑사바이트 EB**)을 선택하세요.
**참고**  
기본 작업은 쿼리가 제한을 초과할 경우 쿼리를 취소하는 것입니다. 이 설정은 변경할 수 없습니다.

1. **저장**을 선택하여 변경 사항을 적용하세요.

## 작업 그룹당 데이터 사용량 알림 생성 또는 편집
<a name="create-a-per-workgroup-data-usage-alert"></a><a name="configure-control-limit-per-workgroup"></a>

**작업 그룹당 데이터 사용량 알림 생성**

작업 그룹에서 실행되는 쿼리가 특정 기간 내에 지정된 양의 데이터를 스캔할 때 여러 경고 임계값을 설정할 수 있습니다. 알림은 Amazon CloudWatch 경보를 사용하여 구현되며 작업 그룹의 모든 쿼리에 적용됩니다. 임계값에 도달하면 Amazon SNS에서 지정한 사용자에게 이메일을 보내도록 할 수 있습니다. 임계값에 도달하면 쿼리가 자동으로 취소되지 않습니다.

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)에서 Athena 콘솔을 엽니다.

1. 콘솔 탐색 창이 표시되지 않으면 왼쪽의 확장 메뉴를 선택합니다.

1. 탐색 창에서 **작업 그룹**(Workgroups)을 선택합니다.

1. 목록에서 작업 그룹을 선택합니다.

1. **편집(Edit)**을 선택하여 작업 그룹의 설정을 편집합니다.

1. 아래로 스크롤하여 **작업 그룹 데이터 사용량 알림 - 선택 사항**을 확장합니다.

1. **알림 추가(Add a alert)**를 선택합니다.

1. **데이터 사용량 임계값 구성(Data usage threshold configuration)**에 대해 다음과 같이 값을 지정합니다.
   + **데이터 임계값(Data threshold)**에 숫자를 지정한 다음 드롭다운 목록에서 단위 값을 선택합니다.
   + **기간(Time period)** 드롭다운 목록에서 시간을 선택합니다.
   + **SNS 주제 선택(SNS topic selection)** 드롭다운 목록에서 Amazon SNS 주제를 선택합니다. 또는 **SNS 주제 생성(Create SNS topic)**을 선택하고 [Amazon SNS 콘솔](https://console.aws.amazon.com/sns/v2/home)로 바로 이동해 Amazon SNS 주제를 생성한 후 Athena 계정의 사용자 중 하나에 대해 이 주제의 구독을 설정합니다. 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*의 [Amazon SNS 시작하기](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)를 참조하세요.

1. 새 알림을 생성하는 경우 **알림 추가(Add alert)**를 선택하고 기존 알림을 편집한 경우 **저장(Save)**을 선택합니다.