Skip to main content

S3: Add S3 Intelligent Tiering policy

Updated over a week ago

Difficulty: Medium

Description

We identified several S3 buckets in your account not using the S3 Intelligent-Tiering option, which reduces costs by automatically moving data between storage classes based on access. Objects in the Standard Storage class which have not been accessed in 30 days are transitioned to the Infrequent Access class. If it still has not been accessed after 90 days, the object is transitioned to the Archive Instant Access class.

Selection Criteria

  • Bucket has objects in one or more of those storage class: Standard, Standard Infrequent Access (SIA) or One-Zone Infrequent Access (ZIA)

  • Bucket has no objects in Express One Zone storage class

  • Bucket does not have transitions to archive storage classes (Glacier Instant Retrieval, Glacier Flexible Retrieval, Glacier Deep Archive)

  • Bucket does not already have transitions to Intelligent Tiering

  • Bucket does not have a global deletion policy removing objects within 30 days

  • Bucket does not have a global policy archiving objects within 30 days

  • Bucket does not have very short-lived objects that won't benefit from IT monitoring

Expected Saving

Using S3 Intelligent-Tiering can be beneficial depending on your object access patterns. It automatically adjusts the storage class based on access frequency, helping reduce costs without compromising data accessibility. Monitoring costs are $0.0025/month per 1,000 objects.

Over time, we’ve observed that a typical object distribution tends to follow a 10% / 20% / 70% split per tier.

S3 Intelligent-Tiering reduces storage costs by automatically moving objects between tiers:

Storage Tier

Price (us-east-1)

Transition Delay

Savings vs Standard

Standard

$0.023/GB

Infrequent Access

$0.0125/GB

30 days

~46%

Archive Instant Access

$0.004/GB

90 days

~83%

Monitoring fee: $0.0025 per 1,000 objects/month (objects < 128 KB are not monitored and not moved to IA/Archive tiers).

Typical savings: 20–40% reduction on eligible bucket storage costs, depending on access patterns.

Example: A bucket with 10 TB of Standard storage where 70% of objects are infrequently accessed:

  • Before: 10 TB × $0.023 = $235.52/month

  • After: 3 TB Standard + 7 TB IA = $70.66 + $87.89 = $158.55/month

  • Savings: ~$77/month (~33%)

Operational Impact

  • Downtime: None. The lifecycle policy is applied at the bucket level and transitions happen automatically in the background.

  • Breaking changes: None. Object access patterns, URLs, and APIs remain unchanged — S3 handles tier transitions transparently.

  • Recovery: If access patterns change, objects are automatically moved back to the Frequent Access tier within the Intelligent-Tiering storage class.

  • ⚠️ Warning — Objects < 128 KB: Objects smaller than 128 KB are not monitored and will remain in the Standard tier regardless of the policy. For buckets with very large numbers of small objects, this limits savings.

  • ⚠️ Warning — Monitoring fee: For buckets with millions of small objects, the monitoring fee ($0.0025/1,000 objects) may partially offset the storage savings. Validate that total object count justifies the policy.

  • ⚠️ Warning — 30-day delay: No cost reduction occurs in the first 30 days after applying the policy.

How to apply

Add a S3 Lifecycle rule of bucket to transition all of the objects in the S3 bucket to S3 Intelligent Tiering. Objects with a size less than 128k are ignored.

lifecycle.json:

{
"Rules": [
{
"ID": "MoveToIntelligentTiering",
"Status": "Enabled",
"Filter": {
"Prefix": ""
},
"Transitions": [
{
"Days": 0,
"StorageClass": "INTELLIGENT_TIERING"
}
],
"NoncurrentVersionTransitions": [
{
"NoncurrentDays": 0,
"StorageClass": "INTELLIGENT_TIERING"
}
]
}
]
}

aws s3api put-bucket-lifecycle-configuration \
--bucket your-bucket-name \
--lifecycle-configuration file://lifecycle.json

References

Did this answer your question?