D2-06. Amazon Athena

D2-06. Amazon Athena

in

1. Amazon Athena

Amazon Athena는 S3에 저장된 데이터를 데이터베이스로 이동할 필요 없이, 표준 SQL을 사용하여 직접 분석할 수 있는 서버리스(Serverless) 쿼리 서비스입니다.

1-2. 핵심 기능

구성 요소 설명
서버리스 아키텍처 인프라를 프로비저닝하거나 관리할 필요가 없습니다. 쿼리를 실행하면 Athena가 자동으로 리소스를 할당합니다.
표준 SQL 지원 표준 SQL을 사용하여 데이터를 쿼리하므로, 기존 SQL 지식을 활용하여 쉽게 사용할 수 있습니다.
데이터 포맷 CSV, JSON, ORC, Avro, Parquet 등 다양한 데이터 포맷을 지원합니다. (비용 및 성능을 위해 Parquet, ORC 사용 권장)
비용 모델 쿼리가 스캔한 데이터 양(TB)에 따라 비용을 지불하는 Pay-per-query 모델입니다.
데이터 파티셔닝 S3 객체 경로를 기반으로 데이터를 파티셔닝하여 쿼리 시 스캔하는 데이터 양을 줄여 성능을 높이고 비용을 절감합니다.
통합 쿼리(Federated Query) AWS Lambda를 사용하는 **데이터 소스 커넥터(Data Source Connector)**를 통해 S3 외에 RDS, DynamoDB, 온프레미스 DB 등 다양한 소스의 데이터를 함께 쿼리할 수 있습니다.
성능 최적화 데이터 압축, 컬럼 기반 데이터 포맷 사용, 데이터 파티셔닝, 128MB 이상의 큰 파일 사용 등을 통해 성능을 향상시킬 수 있습니다.

1-3. 구문 예시

Athena에서 성능과 비용 효율성을 높이는 데 가장 중요한 S3 파티션 경로 구조 예시입니다.

# 일반적인 S3 파티션 경로 구조
# 각 슬래시(/)가 가상 열(Virtual Column)이 되어 쿼리 필터로 사용됨
s3://<버킷이름>/<경로>/<파티션1>=<값1>/<파티션2>=<값2>/

# 항공편 데이터 파티셔닝 실제 예시
# 데이터를 년(year), 월(month), 일(day)로 파티셔닝함
s3://athena-examples/flight/parquet/year=1991/month=1/day=1/

위와 같이 데이터를 구성하면 WHERE year=1991 AND month=1 AND day=1 같은 조건의 쿼리를 실행할 때, Athena는 해당 경로의 데이터만 스캔하므로 전체 데이터를 스캔하는 것에 비해 훨씬 빠르고 저렴합니다.

1-4. Athena & QuickSight - 권한 문제

Amazon QuickSight가 Athena를 데이터 소스로 사용하려 할 때 “권한 부족(Insufficient Permissions)” 오류가 발생하는 경우, 대부분 S3 버킷 접근 또는 데이터 복호화 권한 문제입니다.

QuickSight가 Athena를 통해 데이터를 쿼리하려면, 실제 데이터가 저장된 S3 버킷에 접근할 수 있어야 합니다.

문제 원인 해결 방안
S3 버킷 접근 불가 QuickSight가 Athena가 쿼리할 대상 S3 버킷에 접근할 수 없습니다.
KMS 암호화 데이터 복호화 불가 S3 버킷이 SSE-KMS로 암호화되어 있으나, QuickSight가 이 데이터를 복호화(Decrypt)할 권한이 없습니다.