Amazon Athena
Serverless SQL queries run directly against data sitting in S3 — no servers, no loading, pay per byte scanned.
Verified against AWS documentation · 2026-09-09
Key facts
- 01Point Athena at S3, define a table, run standard SQL — the data never moves and there is no ETL or load step
- 02Serverless: nothing to provision, nothing running and nothing billed between queries
- 03Table and schema metadata lives in the AWS Glue Data Catalog; Glue crawlers can infer it for you
- 04You are billed for bytes scanned, so partitioning, compression, and columnar formats (Parquet/ORC) are the cost lever — not query tuning
Exam triggers
Phrases and scenarios that point here.
- "Query data in S3", "ad hoc", "standard SQL", "no infrastructure to manage" → Athena
- Analyze logs already sitting in S3 (CloudTrail, VPC Flow Logs, ALB, CUR) → Athena
- "Least operational overhead" + infrequent or occasional queries → Athena, not Redshift or EMR
- "Reduce Athena cost" → scan less data: partition, compress, convert to Parquet
Not this service
- Frequent, complex BI reporting on loaded structured data → Redshift
- Custom Spark/Hadoop processing with cluster control → EMR
- Building the catalog or transforming the data itself → AWS Glue (Athena queries it, Glue prepares it)
Use cases
- 01Log forensics — "who deleted that bucket last Tuesday?" Point Athena at the CloudTrail bucket and answer it with a WHERE clause instead of a support ticket
- 02Investigating a slow or suspicious network path in VPC Flow Logs, without standing up a logging stack for a question you'll ask twice a year
- 03Billing archaeology — query the Cost and Usage Report in S3 to find which team actually owns a line item that jumped last month
- 04One-off analyst questions against a data lake, where nobody wants to build a warehouse for a number marketing needs once
- 05The SQL layer beneath a QuickSight dashboard, so BI users see raw S3 data without an ETL pipeline in front of it
How it's charged
- 01$5 per TB of data scanned in most Regions — you pay for bytes read from S3, not rows returned; SELECT * on a 100 GB table costs the same whether it returns 10 rows or 10 million
- 02Rounded up to the nearest MB with a 10 MB minimum per query — failed queries are free, but a cancelled query still bills for whatever it scanned before you hit stop
- 03Compressing, partitioning, and converting to columnar formats typically cuts the bill 30–90% — same SQL, fewer bytes read
- 04Capacity Reservations swap per-TB billing for a flat hourly DPU rate, aimed at steady high-concurrency workloads; Athena for Apache Spark is billed per DPU-hour separately
- 05Charges that don't show up on the Athena line: S3 for the source data and for the query results it writes back, Glue Data Catalog requests, and Lambda invocations for federated queries