# S3 Glacier Objects -- Consider Deep Archive

> Glacier Flexible Retrieval stores at roughly $0.0036 per GB-month; Deep Archive at $0.00099, about a 72% cut for data touched less than once a year. ZopNight computes the real per-bucket rate delta on Glacier-dominant buckets, and abstains outright (today on every bucket) rather than estimate with a flat fraction.

Source: https://zop.dev/integrations/aws/recommendations/s3-glacier-objects-consider-deep-archive
Updated: 2026-08-19

---

## Two archive tiers, a 3.6x price gap

Glacier Flexible Retrieval and Glacier Deep Archive solve the same problem (data you
must keep but almost never read) at [very different rates: roughly $0.0036 versus
$0.00099 per GB-month](https://aws.amazon.com/s3/pricing/). For a bucket holding 100 TB of compliance archives that gap is
worth about $267 a month, in exchange for slower retrieval: Deep Archive restores
take 12 to 48 hours. Write-once-read-almost-never data rarely justifies the faster
tier.

## Which buckets are candidates

Discovery records, per bucket, how its bytes distribute across storage classes ([the same StorageType breakdown behind BucketSizeBytes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/metrics-dimensions.html)) and
stamps the dominant class, the largest by bytes. A bucket becomes a candidate only
when that dominant class is Glacier and a monthly cost figure exists for it. The
saving, when emitted, is the genuine rate delta applied to the measured Glacier-tier
capacity: the Glacier rate minus the Deep Archive rate, times the Glacier gigabytes,
times 730 hours. That figure is clamped so it never exceeds the bucket's actual billed cost, which
discounts may have pushed below rack rate.

## Why you will not see this finding today

Concrete-or-abstain is this rule's contract, and today the pricing input it depends
on, the per-bucket Glacier-to-Deep-Archive delta, is not yet produced by the
pipeline. The rule therefore abstains on every bucket in the current release. An
earlier version instead reported 30% of the bucket's total bill as the saving: a
fabricated figure with no rate basis, and exactly the behaviour the abstention
replaced. A rule that says nothing until its number is real is the design, not a gap
in it.

## Measure your own Glacier footprint

```bash
aws cloudwatch get-metric-statistics \
  --namespace AWS/S3 --metric-name BucketSizeBytes \
  --dimensions Name=BucketName,Value=my-bucket Name=StorageType,Value=GlacierStorage \
  --start-time "$(date -u -v-2d +%Y-%m-%dT%H:%M:%SZ)" \
  --end-time "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
  --period 86400 --statistics Average
```

Multiply the bytes by the per-GB rate delta to preview what a lifecycle transition
would save.

## Before you transition anything

Deep Archive fits objects accessed less than once a year, and that access-pattern
judgement is yours to make at remediation, since the rule does not measure retrieval
frequency. Mind the 180-day minimum storage duration: short-lived archives can cost
more after the move, not less. The transition itself is a lifecycle rule, reversible
only by paying to restore and re-tier the objects.
