How to7 min readOctober 11, 2026

When to move S3 files to Glacier, and how to do it in three steps

Glacier cuts the storage rate by up to 96%, but only for files nobody will open soon. Here is the rule for deciding which files qualify, the three steps to move them, and how to keep restores from becoming a support ticket.

JeVaughn Ferguson
Founder, developer
The short version

Move a file to Glacier when it has gone unread for 90 days, is larger than 128 KB and nobody needs it today. Find those files from Cost Explorer and access evidence, move them with one size-filtered lifecycle rule or Intelligent-Tiering's archive tiers, defaulting to Instant Retrieval for business files, and decide before you move anything how people will get a file back. The BucketDesk S3 Savings tool finds the cold data and applies the tiering for you, and the workspace lets people request restores without an AWS login.

Amazon S3 Glacier is the cheapest place AWS will keep a file: Deep Archive costs about one twenty-third of S3 Standard per gigabyte. The catch is that a file in the colder Glacier classes cannot be opened until it is restored, which takes minutes to hours and costs a retrieval fee. Glacier saves money on files nobody opens and costs money, and patience, on files somebody does.

So the job is not "move everything old to Glacier". It is to find the files that will not be opened, move those with one lifecycle rule, and make sure the few that do get asked for can be brought back by the person who needs them. This guide does that in three steps. Prices are AWS list prices for US East (N. Virginia) as of October 2026; other Regions differ.

The rule: three questions decide whether a file belongs in Glacier

A file is a good Glacier candidate when the answer to all three is yes.

  • Has it gone unopened for 90 days or more? Anything read in the last three months will probably be read again, and a restore wait on a file people use is worse than the storage saving.
  • Is it larger than 128 KB? Lifecycle rules skip smaller objects by default, because every transition is a per-object fee and the colder Glacier classes add 40 KB of overhead per object, so tiny files can cost more in Glacier than in Standard.
  • Can whoever needs it wait? Glacier Instant Retrieval opens in milliseconds. Flexible Retrieval takes minutes to 12 hours. Deep Archive takes 12 to 48 hours. If the answer to a request has to be "today", only Instant Retrieval fits.

Step 1: find the cold files

The bill tells you where the money is; the bucket tells you what is cold. In Cost Explorer, filter to Amazon S3 and group by usage type: TimedStorage lines show how much data sits in each storage class. In the S3 console, each bucket's Metrics tab shows bytes by class and the object count. The buckets worth the effort are large, mostly in Standard, and hold files people keep rather than work on: finished projects, delivered exports, scans, footage, backups.

For whether a file is actually read, S3 does not keep a last-accessed date. Three sources answer it: S3 server access logs or a CloudTrail trail that records GetObject for the bucket, the data transfer lines on the bill as an upper bound on reads, and the last-modified date as a weaker proxy. If none of those exist yet, turn on access logging for the big buckets now and decide in 90 days with evidence; Intelligent-Tiering, in step 2, is the way to get the saving in the meantime without guessing.

aws s3api list-objects-v2 --bucket your-bucket --query "Contents[?LastModified<='2026-07-01'].[Key,Size,StorageClass]" --output text | head

Step 2: pick the tier and write the rule

There are two ways to get files into Glacier. A lifecycle rule moves objects to a fixed class after a number of days since they were written, whether or not anyone reads them. Intelligent-Tiering moves objects by whether they are read, and moves them back up when someone opens one. Use the lifecycle rule for files you know are archival. Use Intelligent-Tiering with the archive tiers switched on when you only suspect it.

The tiers, per GB-month: Glacier Instant Retrieval at $0.004 with a 90-day minimum and millisecond access; Glacier Flexible Retrieval at $0.0036 with a 90-day minimum and restores in minutes to hours; Deep Archive at $0.00099 with a 180-day minimum and restores in hours. Against Standard at $0.023, Instant Retrieval is already an 83% cut and needs no restore, which makes it the default for business files. Deep Archive is for data that is legally or practically never coming back. Deleting or overwriting before the minimum still bills the full minimum.

Two costs come with the move. Each object transitioned is a request: $0.02 per 1,000 objects into Instant Retrieval, $0.03 into Flexible Retrieval and $0.05 into Deep Archive, a one-time cost that large files earn back in the first month and tiny files never do, which is why the size filter below matters. And every restore from Flexible Retrieval or Deep Archive is billed per GB and per request, at a rate that depends on how fast you want it.

aws s3api put-bucket-lifecycle-configuration --bucket your-bucket --lifecycle-configuration '{
  "Rules": [{
    "ID": "archive-finished-work",
    "Status": "Enabled",
    "Filter": { "And": { "Prefix": "projects/archive/", "ObjectSizeGreaterThan": 131072 } },
    "Transitions": [
      { "Days": 90, "StorageClass": "GLACIER_IR" },
      { "Days": 365, "StorageClass": "DEEP_ARCHIVE" }
    ]
  }]
}'

Step 3: make restores something people can do themselves

The step most archive plans skip is the day someone needs a file back. With Flexible Retrieval or Deep Archive, the file has to be restored first: a request names the object, a retrieval tier and how many days the restored copy stays readable, and the file opens only after the restore completes. That is a console or CLI task, so in most companies it becomes a ticket to whoever has AWS access, and the saving starts to cost people time.

Plan for it before moving anything. Decide who may request restores, which retrieval tier is the default, and how long a restored copy should stay readable. Then either keep that job with the AWS team and accept the wait, or give the people who use the files a way to request a restore without an AWS login.

aws s3api restore-object --bucket your-bucket --key projects/archive/2024/report.pdf --restore-request '{ "Days": 7, "GlacierJobParameters": { "Tier": "Standard" } }'

aws s3api head-object --bucket your-bucket --key projects/archive/2024/report.pdf --query "[StorageClass, Restore]"
The solution

Move the cold files in three steps, and keep restores in-house

BucketDesk finds the cold data, moves it safely, and lets people bring a file back without an AWS login.

  1. Find the cold data

    The S3 Savings tool's free assessment reads your bucket metrics, three months of billed usage and access evidence inside your account, and shows what each bucket costs now and what tiering would save.

  2. Move it without surprises

    Apply puts the bucket on Intelligent-Tiering with instant access. Each tiered bucket then shows what the Archive and Deep Archive tiers would add, so you switch them on only where a restore wait is fine.

  3. Get a file back without a ticket

    On the Ultra plan, people request a restore from the file itself in the workspace, pick the retrieval tier and how long the copy stays readable, and open it when it is ready.

Try it out now

The Savings tool has no upfront price: nothing is charged until the savings verified on your AWS bill pass $500, then BucketDesk bills a share of what you save, starting at 10%, for twelve months. Restores are billed to your AWS account at AWS rates, like any other retrieval.

Try it in BucketDesk

Minimum is free. Deploy a scoped role with CloudFormation, sign in, and browse, without handing anyone an access key.

Connect a bucket

Primary sources

Discussion

0 comments · open to guests · moderated
Comments appear after a quick review.

Liked this? Get the next article by email. No schedule, no filler, one click to leave.

Keep reading

All writing →