Amazon Athena 쿼리를 예약하려면 어떻게 해야 하나요?
최종 업데이트 날짜: 2022년 12월 20일
Amazon Athena에서 쿼리를 예약하고 싶습니다.
간략한 설명
쿼리 예약은 정기적인 보고 쿼리를 실행하거나 정기적으로 새 파티션을 로드하는 것과 같은 여러 시나리오에서 유용합니다. Athena에서 쿼리를 예약할 수 있는 몇 가지 방법은 다음과 같습니다.
- 원하는 SDK로 AWS Lambda 함수를 생성하여 쿼리를 예약합니다. Lambda가 지원하는 프로그래밍 언어에 대한 자세한 내용은 AWS Lambda FAQ를 참조하세요. 그런 다음 Lambda 함수를 예약하는 Amazon EventBridge 규칙을 생성합니다. 이 방법은 해결 방법에 설명되어 있습니다.
- ETL 파이프라인에서 Athena를 사용하는 경우 AWS Step Functions를 사용하여 파이프라인을 생성하고 쿼리를 예약합니다.
- Linux 시스템에서는 crontab을 사용하여 쿼리를 예약합니다.
- AWS Glue Python 셸 작업을 사용하여 Athena boto3 API를 사용하는 Athena 쿼리를 실행합니다. 그런 다음 AWS Glue 작업에 대한 일정을 정의합니다.
해결 방법
다음 단계에 따라 Lambda 함수 및 EventBridge 규칙을 사용하여 Athena 쿼리를 예약합니다.
1. Lambda에 대한 AWS Identity and Access Management(IAM) 서비스 역할을 생성합니다. 그런 다음 Athena, Amazon Simple Storage Service(Amazon S3) 및 Amazon CloudWatch Logs에 대한 액세스를 허용하는 정책을 연결합니다. 예를 들어 역할에 AmazonAthenaFullAccess 및 CloudWatchLogsFullAccess를 추가할 수 있습니다. AmazonAthenaFullAccess는 Athena에 대한 전체 액세스를 허용하고 Amazon S3에 대한 기본 권한을 포함합니다. CloudWatchLogsFullAccess는 CloudWatch Logs에 대한 모든 액세스를 허용합니다.
2. Lambda 콘솔을 엽니다.
3. [함수 생성]을 선택합니다.
4. [새로 작성]이 선택되어 있는지 확인한 후 다음 옵션을 구성합니다.
[Name(이름)]에 함수 이름을 입력합니다.
[런타임]에서 Python 옵션 중 하나를 선택합니다.
[역할]에서 [기존 역할 사용]을 선택한 다음 1단계에서 생성한 IAM 역할을 선택합니다.
5. 함수 생성을 선택합니다.
6. [함수 코드] 섹션에 코드를 붙여 넣습니다. 다음 예제에서는 Python 3.7을 사용합니다. 예제에서 다음 값을 바꿉니다.
default: Athena 데이터베이스 이름
SELECT * FROM default.tb: 예약하려는 쿼리
s3://AWSDOC-EXAMPLE-BUCKET/: 쿼리 출력의 S3 버킷
import boto3
# Query string to execute
query = 'SELECT * FROM database.tb'
# Database to execute the query against
DATABASE = 'database'
# Output location for query results
output='s3://OUTPUTBUCKET/'
def lambda_handler(event, context):
# Initiate the Boto3 Client
client = boto3.client('athena')
# Start the query execution
response = client.start_query_execution(
QueryString=query,
QueryExecutionContext={
'Database': DATABASE
},
ResultConfiguration={
'OutputLocation': output
}
)
# Return response after starting the query execution
return response
7. [배포]를 선택합니다.
8. Amazon EventBridge 콘솔을 엽니다.
9. 탐색 창에서 [규칙]을 선택하고 [규칙 생성]을 선택합니다.
10. 규칙의 이름과 설명을 입력합니다.
11. [패턴 정의]에서 [예약]을 선택합니다.
12. Cron expression(Cron 표현식)을 선택한 다음 Cron expression을 입력합니다.
13. [이벤트 버스 선택]에서 [AWS 기본 이벤트 버스]를 선택합니다.
14. [대상 선택] 섹션에서 다음을 수행합니다.
[대상]에서 드롭다운 목록 중 [Lambda 함수]를 선택합니다. [함수]에서 드롭다운 목록 중 Lambda 함수의 이름을 선택합니다.
15. Create(생성)을 선택합니다.
여러 쿼리를 예약하는 경우 계정당 Athena API 호출 수에 대한 할당량이 있다는 점에 유의하세요. 자세한 내용은 계정당 API 호출 할당량을 참조하세요.