본문 바로가기

⭐ AWS/Athena

Athena 쿼리 예약

https://aws.amazon.com/ko/premiumsupport/knowledge-center/schedule-query-athena/

 

 

Athena 쿼리 예약

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

aws.amazon.com

1. AWS IAM 서비스 역할 생성

- IAM 역할 생성에서 Athena, Amazon S3 및 Amazon CloudWatch Logs에 대한 액세스를 허용하는 정책을 연결

2. Lambda 함수를 생성 합니다.

- 함수생성 → 새로 작성 → 함수이름 입력 → 런타임: 파이썬 → 역할: 기존 역할 사용 → 함수 생성 클릭하여 함수를 생성 합니다.

3. 함수 코드 입력

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

- 코드 입력 후 배포 클릭

- 쿼리 형태는 아래와 같은 포맷으로 맞춰줘야 한다.

# 테스트 쿼리 
query = "SELECT * FROM athena_test_01.athena_test_zzanggu 
	WHERE description = 'WHITE METAL LANTERN';"

4. 규칙 생성

- Amazon EventBridge 서비스 콘솔을 열고, 탐색 창에서 규칙을 선택 → 규칙 생성을 클릭합니다.

- 규칙의 이름과 설명을 입력 → 패턴정의에서 예약을 선택

- Cron식은 아래의 내용을 참조

2021.04.24 - [분류] - Crontab 사용방법

 

Crontab 사용방법

1 2 3 4 5 program(실행할 명령어) 1. 분(0-59) 2. 시(0-23) 3. 일(0-31) 4. 월(1-12) 5. 요일(0-7, 0 또는 7 = 일요일, 1 = 월요일, 2 = 화요일 ...) 6. 실행할 명령어 1. "*"표시는 각 필드의 모든 시간대를 설..

may9noy.tistory.com

- 모든 설정은 완료 후 생성을 클릭하여 이벤트 브릿지 생성을 마친다.

5. 이벤트 브릿지 리스트 확인

- 이벤트가 생성된 것을 확인 할 수있다.
- 그리고 생성 이벤트를 클릭하면 세부 정보를 확인 할 수 있다.
- 60분 마다 1회씩 람다 함수를 실행 시키는 이벤트 브릿지가 생성 되었다.

- 끝 -