Submit feedback on
Unexpired Non-Current Object Versions in S3
We've received your feedback.
Thanks for reaching out!
Oops! Something went wrong while submitting the form.
Close
Unexpired Non-Current Object Versions in S3
Brendan McFarland
Service Category
Storage
Cloud Provider
AWS
Service Name
AWS S3
Inefficiency Type
Missing Lifecycle Policy
Explanation

When S3 versioning is enabled but no lifecycle rules are defined for non-current objects, outdated versions accumulate indefinitely. 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.

Relevant Billing Model

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.

Detection
  • 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
Remediation
  • 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
Submit Feedback