Skip to content

S3 Storage Class

๐Ÿ“ฆ What is a Storage Class in S3?

An S3 Storage Class defines how your data is stored, in terms of:

  • Availability

  • Durability

  • Access frequency

  • Cost

โœ… Storage class is set per object, not per bucket.


๐Ÿงพ All S3 Storage Classes โ€” Comparison Table

Storage Class Use Case Durability Availability Min Storage Retrieval Fee Key Notes
Standard General-purpose storage (frequently accessed) 99.999999999% (11 9s) 99.99% None โŒ No Default class
Intelligent-Tiering Unknown or variable access patterns 99.999999999% 99.9โ€“99.99% 30 days โŒ No Auto-moves to lower tiers
Standard-IA Infrequent but rapid access 99.999999999% 99.9% 30 days โœ… Yes 128 KB min object size
One Zone-IA Infrequent + non-critical data 99.999999999% 99.5% 30 days โœ… Yes Stored in one AZ only
Glacier Instant Retrieval Archival with millisecond access 99.999999999% 99.9% 90 days โœ… Yes Cost-efficient alternative to Standard-IA
Glacier Flexible Retrieval Archival, access within minutes-hours 99.999999999% Varies 90 days โœ… Yes Cheaper, restore in 1 min โ€“ 12 hrs
Glacier Deep Archive Long-term archive (tapes replacement) 99.999999999% Varies 180 days โœ… Yes Cheapest โ€” restore takes 12โ€“48 hours
Reduced Redundancy (RR) โŒ Deprecated Lower Lower โ€” โŒ No Use only for legacy cases

๐Ÿง  When to Use Each Storage Class

Use Case Best Class
Frequently accessed web content Standard
User-generated content (access varies) Intelligent-Tiering
Backups / logs accessed monthly Standard-IA
Non-critical backup (test environments) One Zone-IA
Compliance archives (PDFs, logs, backups) Glacier Deep Archive
Emails or reports accessed quarterly Glacier Flexible Retrieval

๐Ÿ”„ Lifecycle Policy (Automatic Transition)

You can automatically move data between classes using lifecycle rules.

Example: Standard โ†’ IA โ†’ Glacier

{
  "Rules": [{
    "ID": "TransitionToIA",
    "Filter": { "Prefix": "" },
    "Status": "Enabled",
    "Transitions": [
      {
        "Days": 30,
        "StorageClass": "STANDARD_IA"
      },
      {
        "Days": 90,
        "StorageClass": "GLACIER"
      }
    ]
  }]
}

โœ… Use this to optimize storage cost over time.


๐Ÿงช Terraform Example: S3 with Storage Class Lifecycle

resource "aws_s3_bucket" "example" {
  bucket = "yuva-storage-demo"
}

resource "aws_s3_bucket_lifecycle_configuration" "lifecycle" {
  bucket = aws_s3_bucket.example.id

  rule {
    id     = "lifecycle-transition"
    status = "Enabled"

    transition {
      days          = 30
      storage_class = "STANDARD_IA"
    }

    transition {
      days          = 90
      storage_class = "GLACIER"
    }

    expiration {
      days = 365
    }
  }
}

๐Ÿ’ฐ Cost Consideration Summary

Cost Component Applies to...
Storage cost (per GB) Based on class (Glacier < IA < Standard)
PUT request Every transition creates a PUT request
Retrieval cost Glacier, IA, etc.
Early deletion penalty IA/Glacier (<30/90 days)

๐Ÿ” Encryption & Storage Class

Storage class has no impact on encryption โ€” you can use:

  • SSE-S3 (default)

  • SSE-KMS

  • SSE-C


โœ… TL;DR Cheat Sheet

Storage Class When to Use Retrieval Time
Standard Frequently accessed files Immediate
Intelligent-Tiering Access pattern unknown Immediate
Standard-IA Infrequent access, high durability Immediate
One Zone-IA Non-critical backup, cheaper Immediate
Glacier Instant Fast-access archive Milliseconds
Glacier Flexible Long-term storage 1โ€“12 hours
Glacier Deep Archive Compliance/rarely used archive 12โ€“48 hours