Amazon S3
Virtually unlimited object storage — PUT and GET whole files over HTTP while AWS handles the durability.
Verified against AWS documentation · 2026-09-09
Key facts
- 01Objects sit in a flat bucket, not folders — "photos/2026/cat.jpg" is one long key and the slashes are cosmetic
- 0211 nines durability across 3+ AZs by default; bucket names are globally unique and the Region is locked at creation
- 03Storage class is set per object, not per bucket — Lifecycle rules transition and expire objects automatically as they age
- 04New buckets are secure by default: Block Public Access on, ACLs off, SSE-S3 encryption on every object
- 05Limits: 0 bytes to 50 TB per object (raised from 5 TB in Dec 2025 — older exam material still says 5 TB), 5 GB max single PUT, multipart above that
Exam triggers
Phrases and scenarios that point here.
- "Store any amount of data", "durable", "highly available", "static files" → S3 is the default storage answer
- "Static website, no servers to manage" → S3 static website hosting, usually with CloudFront in front
- "Retain for 7 years", "cheapest possible archive", "rarely accessed" → Lifecycle into Glacier classes; unknown access pattern → Intelligent-Tiering
- "Recover accidentally deleted files" → Versioning; "nobody can delete it, not even an admin" → Object Lock
Not this service
- Several EC2 instances need the same files mounted as a drive → EFS
- A disk for one instance's OS or a database's data files → EBS
Use cases
- 01Hosting a static site or SPA — drop the build output in a bucket, put CloudFront in front, and there's no web server to patch or scale
- 02Storing user uploads — the app hands out a presigned URL and the file goes browser-to-S3, never touching your servers
- 03Data lake landing zone — raw CSV and Parquet land in a bucket and Athena queries them in place, with no database to load first
- 04Backups and log archive — nightly database dumps and CloudTrail/ALB logs pile up here, with a Lifecycle rule dropping them into Glacier after 90 days
- 05Handoff between systems — a batch job writes a file, S3 Event Notifications fire Lambda, the next stage picks it up; the bucket is the integration point
How it's charged
- 01Storage is per GB-month at the object's storage class rate — and with Versioning on, every version is a separately billed object
- 02Requests are billed on top: PUT, COPY, POST and LIST cost more than GET, DELETE is free, and millions of tiny objects can cost more in requests than in storage
- 03Data in is free; data out to the internet is per GB (first 100 GB/month free across AWS). Out to another AWS service in the same Region, or to CloudFront, is free
- 04Cold classes trade storage price for retrieval price: per-GB retrieval fees plus minimum storage durations — 30 days for IA, 90 for Glacier Instant and Flexible, 180 for Deep Archive. Delete early and you still pay the remainder
- 05Standard-IA, One Zone-IA and Glacier Instant Retrieval have a 128 KB minimum billable object size, so a bucket of 10 KB thumbnails bills as if each were 128 KB. Lifecycle transitions are charged per request too