Explanation
Why the waste happens and who it affects.
These non-current versions are rarely accessed but continue to incur storage charges. Over time, this leads to significant hidden costs, particularly in buckets with frequent object updates or automated data pipelines. Proper lifecycle management is required to limit or expire obsolete versions.
Billing model
The pricing dimensions that drive this cost.
S3 charges for all object versions retained in a bucket, including non-current versions. Each version consumes full storage capacity and accrues charges until explicitly deleted or transitioned by a lifecycle policy.
How to detect
4 checks to find it in your estate.
- Review S3 buckets with versioning enabled to determine if lifecycle policies are applied to manage non-current versions
- Assess storage growth patterns and identify buckets where non-current versions represent a large share of total usage
- Confirm whether retained non-current versions are actively used or required for compliance purposes
- Evaluate consistency of versioning and lifecycle policy practices across production and non-production buckets
How to fix
4 ways to remove the waste.
- Implement lifecycle policies to expire or transition non-current versions after an appropriate retention period
- Tailor policies by bucket or prefix to align with business, compliance, or recovery requirements
- Retain only the number of historical versions necessary for recovery or auditing; remove excess versions automatically
- Periodically review lifecycle rules to ensure alignment with evolving requirements and prevent reaccumulation
Documentation
Vendor references for pricing and configuration.