Skip to main content
CloudCertPrep

Amazon S3 Storage Classes Explained: Choosing the Right Tier

6 min read · Updated 2026-10-25

Every S3 object lives in a storage class that determines its price, durability characteristics, and retrieval behavior. The exam loves scenarios where an access pattern is described and you must pick the cheapest class that still meets the requirements — so anchor your thinking on access frequency and retrieval-time tolerance.

All classes except One Zone-IA store data redundantly across multiple Availability Zones. The differences that matter are cost per GB-month, retrieval fees, and retrieval latency.

The classes at a glance

  • S3 Standard — frequent access, millisecond latency, highest storage cost, no retrieval fee.
  • S3 Intelligent-Tiering — automatically moves objects between frequent/infrequent/archive tiers based on observed access; use when patterns are unknown or changing.
  • S3 Standard-IA — infrequent access, still millisecond latency, lower storage price but a per-GB retrieval fee.
  • S3 One Zone-IA — like Standard-IA but in a single AZ; cheaper, less resilient.
  • S3 Glacier Instant Retrieval — archive pricing with millisecond access, for data accessed roughly once a quarter.
  • S3 Glacier Flexible Retrieval — minutes-to-hours retrieval for data accessed once or twice a year.
  • S3 Glacier Deep Archive — the lowest storage price; hours-long retrieval; designed for long-retention compliance archives.

Decision framework

Ask two questions: how often is the data read, and how fast must retrieval be? Frequently accessed → Standard. Unknown or changing → Intelligent-Tiering. Rarely accessed but must stay millisecond-fast → Standard-IA or Glacier Instant Retrieval. Tolerates hours → Flexible Retrieval or Deep Archive.

Watch the exam trap: cheaper storage classes charge retrieval fees, so putting frequently-read objects in Standard-IA can cost more than Standard.

Lifecycle rules

When access patterns are predictable by age — logs queried for 30 days, then rarely — use lifecycle rules to transition objects between classes and expire them at end of retention. It is the standard answer for 'reduce cost automatically over time.'