Amazon Athena에서는 사용한 만큼만 비용을 지불하면 됩니다. 사용할 때에는 선수금, 최소 약정 또는 장기 계약이 필요하지 않습니다. 매달 말에 사용량에 대한 요금이 청구됩니다.
시작하려면, 쿼리 엔진, 실행 결과를 보관하는 Amazon Simple Storage Service(S3)의 작업 디렉터리, AWS Identity and Access Management(IAM) 역할(필요 시), 리소스 태그를 지정할 수 있는 작업 그룹을 생성합니다. 작업 그룹을 사용하여 사용자, 팀, 애플리케이션 또는 워크로드를 분리하고, 각 쿼리 또는 전체 작업 그룹이 처리할 수 있는 데이터 양의 한도를 설정하고, 비용을 추적할 수 있습니다. 생성한 작업 그룹을 기반으로 (a) SQL 기반 쿼리를 실행하고 스캔된 바이트 수에 대하여 청구를 받거나 (b) Apache Spark Python 코드를 실행하고 코드 실행에 대해 시간당 요금을 청구받을 수 있습니다.
쿼리당 요금
열 기반 데이터 형식 및 파티션 사용과 데이터 압축을 통해 비용을 추가 절감
데이터를 압축 및 파티셔닝하고 열 기반 형식으로 변환함으로써 쿼리당 비용을 30%에서 90% 절감하고 성능을 더 향상할 수 있습니다.
요금 세부 정보
쿼리 편집기 또는 AWS Command Line Interface(CLI)를 사용한 SQL 기반 쿼리
각 쿼리에서 스캔한 데이터 양에 따라 요금이 부과됩니다. 데이터를 압축 또는 파티셔닝하거나 컬럼 형식으로 변환하면 Athena가 쿼리를 실행하기 위해 스캔해야 하는 데이터 양이 감소하므로 비용을 대폭 절감하고 성능을 높일 수 있습니다.
Athena에서 스캔한 바이트 수에 대해 비용이 부과되며 쿼리당 최고 10MB로 가장 가까운 메가바이트로 올림 처리됩니다. CREATE/ALTER/DROP TABLE과 같은 Data Definition Language(DDL) 문, 파티셔닝 관리를 위한 문 또는 실패한 쿼리에 대해서는 비용이 부과되지 않습니다. 취소된 쿼리는 스캔된 데이터 양에 따라 요금이 부과됩니다.
데이터를 압축하면 Athena가 스캔할 데이터가 줄어듭니다. 데이터를 컬럼 형식으로 변환하면 Athena가 필요한 컬럼만 선택적으로 읽어 데이터를 처리할 수 있습니다. Athena는 Apache ORC와 Apache Parquet를 지원합니다. 또한 데이터를 파티셔닝하면 Athena는 스캔된 데이터의 양을 제한할 수도 있습니다. 그 결과, 비용은 절감되고 성능은 향상됩니다. Athena 콘솔에서 쿼리당 스캔된 데이터 양을 확인할 수 있습니다. 자세한 내용은 아래의 요금 예제를 참조하십시오.
연합 쿼리 요금
Athena에서 스캔한 바이트 수(모든 데이터 원본에서 집계)에 대해 비용이 부과되며 쿼리당 최고 10MB로 가장 가까운 메가바이트로 올림 처리됩니다.
노트북 또는 AWS CLI를 사용한 Apache Spark Python 코드 실행
Apache Spark 애플리케이션을 실행하는 데 걸린 시간에 대한 비용만 지불하면 됩니다. Apache Spark 애플리케이션을 실행하는 데 사용된 데이터 처리 단위(DPU)의 수에 따라 시간당 비용이 부과됩니다. 단일 DPU에서 vCPU 4개와 16GB 메모리를 제공합니다. 증분 단위는 1초이며, 가까운 분으로 반올림되어 비용이 청구됩니다.
Athena 콘솔에서 노트북을 시작하거나 Athena API를 사용하여 Spark 세션을 시작하는 경우 애플리케이션에 대해 두 개의 노드가 프로비저닝됩니다. 하나는 노트북 노드로, 노트북 사용자 인터페이스에서 서버 역할을 합니다. 다른 노드는 Spark 드라이버 노드로, 해당 Spark 애플리케이션을 조율하고 모든 Spark 워커 노드와 통신합니다. Spark 워커 노드는 Spark 애플리케이션의 작업 실행을 담당합니다. 세션을 시작하면 노트북의 셀을 실행하거나 start-calculation-execution API를 사용하여 Spark 애플리케이션을 실행할 수 있습니다. Spark 애플리케이션을 실행할 때, Athena는 애플리케이션에 대한 Spark 워커 노드를 프로비저닝합니다. 애플리케이션을 실행을 완료하면 워커 노드가 해제됩니다. Athena for Apache Spark가 자동적으로 리소스를 즉시 스케일 다운하므로 Athena는 지불하는 유휴 비용을 최소화합니다. Spark 세션이 종료되면, 드라이버, 워커 노드 및 노트북 노드가 해제됩니다. Athena는 세션이 지속되는 동안 드라이버 및 워커 노드에 대한 비용을 청구합니다. Athena는 Spark 애플리케이션을 생성, 제출, 실행하기 위한 사용자 인터페이스로 콘솔에서 노트북을 추가 비용 없이 제공합니다. Athena는 Spark 세션 중에 사용한 노트북 노드에 대한 비용은 청구하지 않습니다.
추가 비용
Athena는 Amazon S3에서 직접 데이터를 쿼리합니다. Athena로 데이터를 쿼리하는 데 드는 스토리지 추가 비용은 없습니다. 스토리지, 요청 및 데이터 전송에 대한 표준 S3 요금이 부과됩니다. 기본적으로 쿼리 결과는 선택한 S3 버킷에 저장되고 표준 S3 요금이 청구됩니다.
Athena와 함께 AWS Glue 데이터 카탈로그를 사용하면, 표준 데이터 카탈로그 요금이 부과됩니다. 자세한 내용은 AWS Glue 요금 페이지를 참조하세요.
또한 Athena와 함께 사용하는 Amazon S3, AWS Lambda, AWS Glue, Amazon SageMaker 등의 AWS 서비스에 대해서도 표준 요금이 청구됩니다. 예를 들어 스토리지, 요청 및 리전 간 데이터 전송에 대해 S3 요금이 청구됩니다. 기본적으로 쿼리 결과는 선택한 S3 버킷에 저장되고 표준 S3 요금이 청구됩니다. Lambda를 사용하는 경우에는 함수 요청 수와 기간, 코드를 실행하는 데 걸리는 시간에 따라 요금이 청구됩니다.
연합 쿼리는 사용 계정에서 Lambda 함수를 호출하며 Lambda 사용에 대한 표준 요금이 부과됩니다. 연합 쿼리에서 호출되는 Lambda 함수는 Lambda 프리 티어일 수 있습니다. 자세한 내용은 Lambda 요금 페이지를 참조하세요.
요금 예시
예제 1 – SQL 쿼리
크기가 같은 4개의 컬럼으로 구성된 테이블이 있고, 총 3TB의 압축되지 않은 텍스트 파일이 Amazon S3에 저장되어 있다고 가정해 보겠습니다. 이 테이블의 한 컬럼에서 데이터를 가져오도록 쿼리를 실행하면 Amazon Athena가 전체 파일을 스캔해야 합니다. 텍스트 형식은 분할될 수 없기 때문입니다.
- 이 쿼리 비용은 15 USD가 됩니다. (3TB 스캔 요금은 3 * 5 USD/TB = 15 USD).
GZIP을 사용해 파일을 압축하면 3:1의 압축 게인을 얻을 수 있습니다. 이 경우 1TB 크기의 압축 파일이 생깁니다. 이 파일에 동일한 쿼리를 수행하면 비용이 5 USD가 됩니다. Athena는 전체 파일을 다시 스캔해야 하지만, 크기가 1/3로 줄어들었으므로 앞에서 지불했던 비용의 1/3만 지불하게 됩니다. 파일을 압축하고(3:1 압축률을 달성) 이를 Apache Parquet와 같은 컬럼 형식으로 변환하는 경우 S3에 저장되는 데이터는 여전히 1TB가 됩니다. 하지만 이 경우 Parquet이 컬럼 방식이므로 Athena는 실행되는 쿼리와 연관이 있는 컬럼만 읽게 됩니다. 이 예제에서는 쿼리가 하나의 컬럼만 참조하므로 Athena는 파일에서 해당 컬럼만 읽고 나머지 3/4는 읽지 않아도 됩니다. Athena가 이 파일의 1/4만 읽으므로 S3에서 0.25TB의 데이터만 스캔합니다.
- 이 쿼리 비용은 1.25 USD가 됩니다. 압축으로 비용이 1/3로 절감되고 하나의 컬럼만 읽음으로써 다시 1/4로 절감됩니다.
(파일 크기 = 3TB/3 = 1TB. 하나의 컬럼을 읽을 때 스캔된 데이터 = 1TB/4 = 0.25TB. 0.25TB에 대한 요금 = 0.25 * 5 USD/TB = 1.25 USD)
예제 2 – Apache Spark 애플리케이션
이전 분기에 대한 매출 수치를 가져오고 그래픽을 그려 보고서를 생성하기 위해 Athena 콘솔의 노트북 사용을 고려합니다. 노트북을 사용하여 세션을 시작합니다. 세션이 1시간 동안 진행되고 세션의 일환으로 6개의 계산 결과가 제출됩니다. 각 계산은 20개 1-DPU 워커 노드를 통해 1분 동안 실행 및 지속됩니다.
- 워커 DPU-시간 = 계산 수 * 계산당 사용된 DPU * 계산 실행 시간 = 6개의 계산 * 계산당 20개의 DPU * 계산당 (1/60) 시간 = 2.0 DPU-시간
- 드라이버 DPU-시간 = 세션당 사용된 DPU * 세션 시간 = 세션당 1 DPU * 세션당 1시간 = 1.0 DPU-시간
- 총 DPU-시간 = 워커 DPU-시간 + 드라이버 DPU-시간 = 2.0 DPU-시간 + 1.0 DPU-시간 = 3.0 DPU-시간
- Spark 애플리케이션 충전 = DPU-시간당 $0.35 * 3.0 DPU-시간 = $1.05
참고: S3는 실행 데이터와 결과를 보관하고 읽을 때 별도로 청구합니다.
추가적인 요금 리소스
AWS에서 월별 비용을 손쉽게 계산
AWS 전문가에게 맞춤 견적 받기