All cheat sheets
Storagecheat sheet

S3 Glacier: Choosing the Right Tier

The three Glacier tiers — Instant, Flexible, Deep Archive — differ 4× in price and a million× in retrieval speed. A decision guide with the price ladder, the minimums, and the access-pattern test that picks the right one.

Last reviewed: July 11, 2026

TL;DR: "Glacier" is three different products wearing one name. Instant Retrieval reads in milliseconds at ~$0.004/GB-month; Flexible Retrieval reads in minutes-to-hours at ~$0.0036; Deep Archive reads in 12–48 hours at ~$0.00099. Pick by access pattern, not price tag — the expensive mistake is data one rung away from where it belongs, in either direction.

The numbers

Tier $/GB-month Retrieval Min. duration Min. object
Standard (reference) $0.023 ms, free GETs
Glacier Instant Retrieval $0.004 milliseconds, ~$0.03/GB fee 90 days 128 KB
Glacier Flexible Retrieval $0.0036 1 min–12 h by option 90 days 40 KB
Glacier Deep Archive $0.00099 12–48 h 180 days 40 KB

All three: 11-nines durability across 3+ AZs — identical to Standard. Cheap is not fragile; the difference is purely read latency and fees.

Do this

  1. Apply the access-pattern test per dataset:

    • Touched a few times a year, needed instantly (legal pulls, medical imaging, licensing) → Instant Retrieval
    • Touched rarely, hours of notice available (audits, re-edits, backup restores) → Flexible Retrieval
    • Realistically never read again (7-year retention, decommissioned systems) → Deep Archive
  2. Build the ladder as one lifecycle policy so data descends automatically:

    aws s3api put-bucket-lifecycle-configuration --bucket YOUR-BUCKET \
      --lifecycle-configuration '{"Rules":[{"ID":"ladder","Status":"Enabled",
      "Filter":{},"Transitions":[
        {"Days":30,"StorageClass":"GLACIER_IR"},
        {"Days":365,"StorageClass":"DEEP_ARCHIVE"}]}]}'
    
  3. Check for one-rung-early ladders: policies written years ago often stop at Glacier Flexible; multi-year retention that never restores should continue to Deep Archive (4× cheaper).

  4. Use S3 Select on restores from Flexible when you need specific records out of large archives — pulling only matching rows instead of whole objects slashes retrieval fees on compliance searches.

Gotchas

  • Wrong-tier-by-one costs real money in both directions: Deep Archive data restored monthly bleeds retrieval fees and hours; Instant Retrieval data never read overpays ~4× vs Deep Archive.
  • The minimums stack: a small object deleted early is billed at the minimum size for the minimum duration, whichever tier.
  • Transitions run once daily — plan compliance cutover dates around the lag.
  • Serving live traffic from any Glacier tier (even Instant, because of per-GB fees) is a bill you'll notice — product assets belong in Standard or Intelligent-Tiering.

Skip this if

Run this audit with your AI assistant

Paste this into Claude, ChatGPT, or any agent that can run the AWS CLI with read-only credentials. It audits your account for exactly the waste this sheet describes — and changes nothing.

You are auditing an AWS account's archival-storage tiering across the
three S3 Glacier classes. Use the AWS CLI with READ-ONLY credentials.
Do not create, modify, or delete anything — report findings and
recommended (unapplied) fixes only.

1. Inventory: per bucket, GB stored per storage class (CloudWatch
   BucketSizeBytes by StorageType: StandardStorage, StandardIAStorage,
   GlacierInstantRetrievalStorage, GlacierStorage, DeepArchiveStorage).
2. Misplacement checks:
   a. Cold data still in STANDARD: archive/backup/compliance-named
      buckets with no lifecycle rules (get-bucket-lifecycle-configuration).
   b. Data in GLACIER (Flexible) that is never restored → cheaper in
      DEEP_ARCHIVE. Look for restore activity if request metrics exist.
   c. Data in GLACIER that gets restored urgently/often → belongs in
      GLACIER_IR.
   d. Lifecycle ladders that stop one rung early (e.g., transition to
      GLACIER but never to DEEP_ARCHIVE for multi-year retention).
3. Price ladder for the math (us-east-1, $/GB-mo): Standard 0.023,
   Standard-IA 0.0125, Glacier Instant 0.004, Glacier Flexible 0.0036,
   Deep Archive 0.00099. Minimum durations: 30/90/90/180 days.

Report: current GB and $/mo per class per bucket; each misplacement with
estimated monthly delta; a recommended target ladder per bucket as
lifecycle JSON — but do NOT apply anything.
Works with any assistant that can run shell commands.

Want the guided version?

The S3 Glacier (Flexible Retrieval) walkthrough covers this topic interactively — it asks about your setup, branches to what’s relevant, and quizzes you on the tricky parts. Free and anonymous.

Start the walkthrough