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

  1. 01Point Athena at S3, define a table, run standard SQL — the data never moves and there is no ETL or load step
  2. 02Serverless: nothing to provision, nothing running and nothing billed between queries
  3. 03Table and schema metadata lives in the AWS Glue Data Catalog; Glue crawlers can infer it for you
  4. 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

  1. 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
  2. 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
  3. 03Billing archaeology — query the Cost and Usage Report in S3 to find which team actually owns a line item that jumped last month
  4. 04One-off analyst questions against a data lake, where nobody wants to build a warehouse for a number marketing needs once
  5. 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

  1. 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
  2. 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
  3. 03Compressing, partitioning, and converting to columnar formats typically cuts the bill 30–90% — same SQL, fewer bytes read
  4. 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
  5. 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

Commonly confused with

References