Athena 쿼리를 예약하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 5월 21일

Amazon Athena에서 쿼리를 예약하려면 어떻게 해야 합니까?

간략한 설명

쿼리 예약은 정기적인 보고 쿼리를 실행하거나 정기적으로 새 파티션을 로드하는 것과 같은 여러 시나리오에서 유용합니다. Athena에서 쿼리를 예약할 수 있는 몇 가지 방법은 다음과 같습니다.

해결 방법

Lambda 함수 및 CloudWatch Events 규칙을 사용하여 Athena 쿼리를 예약하려면 다음을 수행합니다.

1.    Lambda에 대한 AWS Identity and Access Management(IAM) 서비스 역할을 생성합니다. 그런 다음 Athena, Amazon Simple Storage Service(Amazon S3) 및 Amazon CloudWatch Logs에 대한 액세스를 허용하는 정책을 연결합니다. 예를 들어 역할에 AmazonAthenaFullAccessCloudWatchLogsFullAccess를 추가할 수 있습니다. AmazonAthenaFullAccess는 Athena에 대한 전체 액세스를 허용하고 Amazon S3에 대한 기본 권한을 포함합니다. CloudWatchLogsFullAccess는 CloudWatch Logs에 대한 모든 액세스를 허용합니다.

2.    Lambda 콘솔을 엽니다.

3.    [Create function]을 선택합니다.

4.    [새로 작성]이 선택되어 있는지 확인한 후 다음 옵션을 구성합니다.

[Name(이름)]에 함수 이름을 입력합니다.
[런타임]에서 Python 옵션 중 하나를 선택합니다.
[역할]에서 [기존 역할 사용]을 선택한 다음 1단계에서 생성한 IAM 역할을 선택합니다.

5.    [Create function]을 선택합니다.

6.    [함수 코드] 섹션에 코드를 붙여 넣습니다. 다음 예제에서는 Python 3.7을 사용합니다. 예제에서 다음 값을 대체합니다.

default: Athena 데이터베이스 이름
SELECT * FROM default.tb: 예약하려는 쿼리
s3://AWSDOC-EXAMPLE-BUCKET/: 쿼리 출력의 S3 버킷

import time
import boto3

query = 'SELECT * FROM default.tb'
DATABASE = 'default'
output='s3://AWSDOC-EXAMPLE-BUCKET/'

def lambda_handler(event, context):
    query = "SELECT * FROM default.tb"
    client = boto3.client('athena')

    # Execution
    response = client.start_query_execution(
        QueryString=query,
        QueryExecutionContext={
            'Database': DATABASE
        },
        ResultConfiguration={
            'OutputLocation': output,
        }
    )
    return response
    return

7.    페이지 오른쪽 상단 모서리에서 [저장]을 선택합니다.

8.    CloudWatch 콘솔을 엽니다.

9.    탐색 창에서 [규칙]을 선택하고 [규칙 생성]을 선택합니다. CloudWatch Event 규칙 생성에 대한 자세한 내용은 2단계: 규칙 생성을 참조하십시오.

10.   [이벤트 소스] 섹션에서 [예약]을 선택한 다음 cron expression을 입력합니다.

11.   페이지 오른쪽에 있는 [대상] 섹션에서 [대상 추가]를 선택합니다.

12.   드롭다운 목록에서 [Lambda 함수]를 선택합니다.

13.   [함수] 드롭다운 목록에서 해당 Lambda 함수의 이름을 선택합니다.

14.   페이지 오른쪽 하단에서 [세부 정보 구성]을 선택합니다.

15.   CloudWatch Events 규칙의 [이름]과 [설명]을 입력한 다음 [규칙 생성]을 선택합니다.

16.   Lambda 콘솔을 열고 이전에 생성한 함수를 선택합니다.

17.   [트리거 추가]를 선택한 다음 [CloudWatch Events/EventBridge]를 선택합니다.

18.   [규칙] 드롭다운 목록에서 방금 생성한 CloudWatch Events 규칙을 선택합니다.

19.   [추가]를 선택합니다.

여러 쿼리를 예약하는 경우 계정당 Athena API에 대한 호출 수에 대한 할당량이 있다는 점에 유의하십시오. 자세한 내용은 계정당 API 호출 할당량을 참조하십시오.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?