AWS (and other cloud platforms) offer multiple storage types, each with different characteristics and costs. Picking the right type for the right data is one of the larger cost levers.
This page covers the major options and the patterns that work.
Use for:
S3 is the universal default. If unsure, start with S3.
Use for:
Use for:
The biggest cost lever in S3:
| Class | Use case | Cost (rough) |
|---|---|---|
| Standard | Hot data | $0.023/GB-month |
| Intelligent-Tiering | Unknown access patterns | Auto-moves; small monitoring fee |
| Standard-IA (Infrequent Access) | Warm; <1 access/month | $0.0125/GB-month |
| One Zone-IA | Same; one AZ only | $0.01/GB-month |
| Glacier Instant Retrieval | Archive; rare access; instant | $0.004/GB-month |
| Glacier Flexible Retrieval | Archive; minutes-hours retrieval | $0.0036/GB-month |
| Glacier Deep Archive | Long-term archive; 12-hour retrieval | $0.00099/GB-month |
The cost difference is 23x between Standard and Deep Archive. For data that's truly cold, the savings are real.
Automate the transition:
- After 30 days → Standard-IA
- After 90 days → Glacier
- After 1 year → Glacier Deep Archive
- After 7 years → Delete
Lifecycle rules are free. Set them up; they save real money on long-tail data.
Protect against accidental deletes/overwrites. Slightly higher cost (multiple versions stored).
Always encrypt. SSE-S3 (AWS-managed keys) or SSE-KMS (your KMS keys). Enable at bucket level.
S3 + CloudFront for static sites. Cheap, fast, scales automatically.
Generate time-limited URLs for direct upload/download without going through your application. See FileUploadPatterns.
For disaster recovery. Asynchronous replication to another region. Useful for compliance and DR.
For most workloads, gp3 is right.
Point-in-time copies stored in S3. Use for:
Snapshots are incremental — only changed blocks are stored. Cost is roughly proportional to actual data, not volume size.
EFS is expensive. Use only when you actually need shared POSIX semantics. For most "share files across instances" needs, S3 with code that fetches/uploads is cheaper.
The use case where EFS earns its cost: legacy applications you can't refactor that expect a shared filesystem.
Most data follows a power-law: heavily-accessed at first, rarely accessed later. Lifecycle rules capture this naturally.
Old logs, old backups, old build artifacts. Set retention; delete what's past retention.
Pay for less data. Gzip text files; Parquet/ORC for analytical data.
Incomplete multipart uploads accumulate; configure lifecycle to abort after N days.
S3 Inventory provides reports of what's stored. S3 Storage Lens provides usage and cost analytics. Use them.