# Lifecycle Transitions of Small S3 Objects to Glacier Storage Classes

Canonical: https://www.pointfive.co/efficiency-hub/inefficiencies/lifecycle-transitions-of-small-s3-objects-to-glacier-storage-classes

Archiving to S3 Glacier Flexible Retrieval or S3 Glacier Deep Archive only saves money when the per-GB storage discount outweighs the fixed per-object...

By: PointFive

Updated: 2026-09-28

[Cloud Efficiency Hub](https://www.pointfive.co/efficiency-hub) 

The short version

Archiving to S3 Glacier Flexible Retrieval or S3 Glacier Deep Archive only saves money when the per-GB storage discount outweighs the fixed per-object costs of getting there.

PointFive Research

Cloud cost research at PointFive

AWS service

[AWS S3](https://www.pointfive.co/efficiency-hub/cloud-services/aws-s3)

Category

[Storage](https://www.pointfive.co/efficiency-hub/service-category/storage)

Reference

CER-0397

Type

Inefficient Configuration

## Explanation

Why the waste happens and who it affects.

Every object transitioned by a lifecycle rule is a billable transition request, and every archived object carries 40 KB of added metadata storage, 8 KB of it billed at S3 Standard rates. For buckets full of small objects, such as log fragments, thumbnails, event records or per-request JSON files, the request charges and overhead can exceed the storage saved, and the minimum storage duration then locks the cost in.

AWS changed the default in September 2024 so that objects smaller than 128 KB no longer transition to any storage class, because for smaller objects transition costs can outweigh the savings. However, lifecycle configurations created before September 2024 keep the previous behavior, which still sends small objects to Glacier Flexible Retrieval and Deep Archive, until the configuration is modified. Rules with a custom ObjectSizeGreaterThan filter below 128 KB, or configurations that explicitly opt back into the old behavior, also keep archiving small objects.

## Billing model

The pricing dimensions that drive this cost.

Archiving an object to a Glacier storage class adds per-object charges on top of the per-GB storage rate.

Transition requests

Each object transitioned to Glacier Flexible Retrieval or Glacier Deep Archive is one transition request, priced per 1,000 requests

Archive metadata overhead

40 KB added per archived object, with 8 KB billed at S3 Standard rates and 32 KB at the destination Glacier rate

Minimum storage duration

90 days for Glacier Flexible Retrieval and 180 days for Glacier Deep Archive, with a prorated early deletion fee if objects are deleted or overwritten sooner

Billing start

Destination-class rates, minimum duration charges and per-object overhead begin on the date the lifecycle rule is satisfied, even if the physical transition happens later

## How to detect

5 checks to find it in your estate.

- Call GetBucketLifecycleConfiguration for buckets with Glacier Flexible Retrieval or Deep Archive transitions and check the x-amz-transition-default-minimum-object-size response header; varies\_by\_storage\_class means objects smaller than 128 KB still transition to those classes

- Check transition rules for an ObjectSizeGreaterThan filter set below 128 KB, or no size filter on a configuration that uses the previous default behavior

- Use S3 Storage Lens average object size, or S3 Inventory reports (Size and StorageClass fields), to find buckets and prefixes where archived or soon-to-be-archived objects are mostly small

- Compare lifecycle transition request charges and the added metadata storage with the storage savings for the affected buckets in Cost Explorer or the Cost and Usage Report

- Check object counts in Glacier classes against total archived bytes; a very high object count for a small total size is the typical signature of this pattern

## How to fix

5 ways to remove the waste.

- Edit the lifecycle configuration so the current default applies, or send the header with the all\_storage\_classes\_128K value in PutBucketLifecycleConfiguration, so objects under 128 KB are no longer archived

- Where only some rules need small objects to move, add an explicit ObjectSizeGreaterThan filter to the Glacier transition rules; custom filters always take precedence over the default behavior

- Aggregate small objects into larger archives (for example tar files, or columnar formats such as Parquet for data sets) before archiving, as AWS recommends, so one transition and one metadata overhead covers many records

- For small objects that must be kept but are rarely read, compare expiring them, leaving them in their current class, or using S3 Intelligent-Tiering, where objects under 128 KB are not charged the monitoring fee and stay in the Frequent Access tier

- For small objects already archived, weigh restore, retrieval and early deletion charges before re-packaging them; it is often cheaper to stop new small-object transitions and let existing archives expire on schedule

## Documentation

Vendor references for pricing and configuration.

- [Transitioning objects using Amazon S3 Lifecycle  docs.aws.amazon.com](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html)

- [GetBucketLifecycleConfiguration  docs.aws.amazon.com](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)

- [S3 Pricing  aws.amazon.com](https://aws.amazon.com/s3/pricing/)

## Related inefficiencies

[Browse the library](https://www.pointfive.co/efficiency-hub)

- AWS S3  CER-0229

### [Excessive KMS Charges from Missing S3 Bucket Key Configuration](https://www.pointfive.co/efficiency-hub/inefficiencies/excessive-kms-charges-from-missing-s3-bucket-key-configuration)

S3 buckets configured with SSE-KMS but without Bucket Keys generate a separate KMS request for each object operation. This behavior results in disproportionately high KMS request costs for data-intensive workloads such as analytics,...

Storage

- AWS S3  CER-0054

### [Excessive CloudTrail Charges from Bulk S3 Deletes](https://www.pointfive.co/efficiency-hub/inefficiencies/excessive-cloudtrail-charges-from-bulk-s3-deletes)

When large numbers of objects are deleted from S3 - such as during scripted cleanups or batch jobs that call DeleteObject or DeleteObjects-CloudTrail can log every individual delete operation if data event logging is enabled. This is...

Storage

- AWS S3  CER-0076

### [Missing S3 Lifecycle Policy for Incomplete Multipart Uploads](https://www.pointfive.co/efficiency-hub/inefficiencies/missing-s3-lifecycle-policy-for-incomplete-multipart-uploads)

Multipart upload allows large files to be uploaded in segments. Each part is stored individually until the upload is finalized by a "CompleteMultipartUpload" request. If this final request is never issued-due to a timeout, crash, failed...

Storage

---
Source: the public page above. Product screenshots and illustrative interfaces are examples, not live customer data.

