Skip to main content

S3: Add S3 Intelligent Tiering policy

Updated over a week ago

Difficulty: Medium

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 object 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

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.

How to fix

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

Did this answer your question?