S3 buckets dominated by Glacier Flexible Retrieval data that could sit in Glacier Deep Archive
What does ZopNight detect here?
ZopNight watches for S3 buckets whose largest storage class is `GLACIER` (Glacier Flexible Retrieval). Moving that data to `DEEP_ARCHIVE` cuts storage from $0.0036 to $0.00099 per GB-month in us-east-1, but restores take up to 12 or 48 hours, and ZopNight needs a per-bucket rate delta before it shows a saving.
Signal and threshold
| Field | Value |
|---|---|
| Rule IDs | RC-1512 |
| Category | rightsizing |
| Severity | low |
| Metric | none — pure configuration read |
| Threshold | dominant storage class GLACIER |
| Source | ZopNight |
| Permissions used | s3:ListAllMyBuckets · s3:GetLifecycleConfiguration · cloudwatch:GetMetricStatistics |
Where it applies
Two archive classes, one quarter of the price apart
S3 Glacier Flexible Retrieval and S3 Glacier Deep Archive are both archival classes, and both require a restore before you can read an object. They differ in price and patience. AWS’s price list for US East (N. Virginia) shows Glacier Flexible Retrieval at $0.0036 per GB-month and Deep Archive at $0.00099. The retrieval options page says standard restores from Deep Archive typically finish within 12 hours and bulk restores within 48 hours, against 3 to 5 hours and 5 to 12 hours for Flexible Retrieval.
The storage class comparison positions Flexible Retrieval for data accessed about once a year and Deep Archive for data accessed less than once a year, with minimum storage durations of 90 and 180 days.
Measuring Glacier data in a bucket
for t in GlacierStorage DeepArchiveStorage StandardStorage; do aws cloudwatch get-metric-statistics --namespace AWS/S3 --metric-name BucketSizeBytes \ --dimensions Name=BucketName,Value=my-archive Name=StorageType,Value=$t \ --start-time 2026-09-22T00:00:00Z --end-time 2026-09-25T00:00:00Z \ --period 86400 --statistics Averagedone
aws s3api get-bucket-lifecycle-configuration --bucket my-archiveHow ZopNight identifies a candidate bucket
- The bucket’s largest storage class by bytes is Glacier Flexible Retrieval.
- ZopNight has a monthly cost for the bucket.
- ZopNight has a per-bucket saving computed from the Glacier and Deep Archive rates applied to the Glacier capacity.
Why candidate buckets show no saving yet
The third input is not produced yet, so the rule stays silent on every bucket for now. It used to claim a fixed share of the bucket bill, which ignored how much of the bill is actually Glacier storage; that estimate was removed rather than kept as a placeholder. Whether the data suits Deep Archive also depends on how often it is restored, which only the owner knows, so even a priced finding asks you to confirm the access pattern.
The rate gap applied to Glacier bytes
saving = Glacier GB x ($0.0036 - $0.00099) per GB-month (us-east-1)capped at the bucket's monthly costAt these rates, 100 TB of Glacier data would drop from about $369 to about $101 a month.
Moving archives to Deep Archive with a lifecycle rule
- Ask the data owners how often they restore, and whether a 12-hour standard restore is acceptable.
- Add a transition rule. Lifecycle can move Glacier Flexible Retrieval objects only to Deep Archive, which is the direction you want:
{"Rules":[{"ID":"glacier-to-deep-archive","Status":"Enabled", "Filter":{"Prefix":"archive/"}, "Transitions":[{"Days":180,"StorageClass":"DEEP_ARCHIVE"}]}]}- Apply it with
aws s3api put-bucket-lifecycle-configuration --bucket my-archive --lifecycle-configuration file://rule.json.