Amazon Athena에서 쿼리를 예약하고 싶습니다.
간략한 설명
예약된 쿼리에는 주기적으로 보고하거나 정기적으로 새 파티션을 로드하는 등 다양한 사용 사례가 있습니다. 사용 사례에 따라 다음 방법 중 하나를 선택하여 Athena에서 쿼리를 예약하십시오.
- AWS Lambda 함수를 만들어 쿼리를 예약한 다음, Amazon EventBridge 규칙을 만들어 Lambda 함수를 예약합니다.
- AWS Step Functions를 사용하여 Athena를 사용하는 ETL 파이프라인을 만듭니다.
- Linux 시스템에서는 crontab을 사용하여 쿼리를 예약합니다.
- AWS Glue Python 쉘 작업을 사용합니다.
해결 방법
Lambda 함수와 EventBridge 규칙을 사용하여 Athena 쿼리 예약
Lambda 함수 및 EventBridge 규칙을 사용하여 Athena 쿼리를 예약할 수 있습니다. 이 작업을 수행하려면 다음 단계를 완료하십시오.
-
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에 대한 전체 액세스를 허용합니다.
-
Lambda 콘솔을 엽니다.
-
함수 만들기를 선택합니다.
-
새로 작성이 선택되어 있는지 확인하고 다음 옵션을 구성합니다.
이름에 함수의 이름을 입력합니다.
런타임에서 Python 옵션 중 하나를 선택합니다.
역할에서 기존 역할 사용을 선택한 다음, 1번 단계에서 만든 IAM 역할을 선택합니다.
-
함수 만들기를 선택합니다.
-
함수 코드 섹션에 코드를 붙여넣습니다. 다음 예제에서는 Python 3.7을 사용합니다. 예제에서 다음 값을 바꿉니다.
기본값: 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
-
배포를 선택합니다.
-
Amazon EventBridge 콘솔을 엽니다.
-
탐색 창에서 규칙를 선택한 다음, 규칙 생성을 선택합니다.
-
규칙의 이름과 설명을 입력합니다.
-
패턴 정의에서 예약을 선택합니다.
-
cron 표현식을 선택한 다음, cron 표현식을 입력합니다.
-
이벤트 버스 선택에서 AWS 기본 이벤트 버스를 선택합니다.
-
대상 선택 섹션에서 다음을 수행합니다.
대상의 드롭다운 목록에서 Lambda 함수를 선택합니다.
함수의 드롭다운 목록에서 Lambda 함수 이름을 선택합니다.
-
만들기를 선택합니다.
참고: 계정당 Athena API에 허용되는 호출 수에는 할당량이 있습니다. 여러 쿼리를 예약하려면 할당량을 넘지 않도록 하십시오. 자세한 내용은 계정당 API 호출 할당량을 참조하십시오.
Step Functions를 사용하여 ETL 파이프라인 만들기
Step Functions를 사용하여 Athena를 포함하는 ETL 파이프라인을 만드는 경우 Step Functions를 사용하여 Athena 쿼리를 예약할 수 있습니다.
Linux 시스템에서 crontab 사용
Linux 시스템을 사용하는 경우 crontab을 사용하여 Athena 쿼리를 예약할 수 있습니다.
AWS Glue Python 쉘 작업 사용
AWS Glue Python 쉘 작업을 사용하여 Athena Boto3 API로 Athena 쿼리를 실행할 수 있습니다. 그런 다음, AWS Glue 작업의 일정을 정의합니다.
관련 정보
자습서: AWS Lambda 함수의 EventBridge 예약 규칙 만들기
Amazon EventBridge에서 일정에 따라 실행되는 규칙 만들기