awss3storagecost-optimization

S3 storage class comparison: when each tier wins

Six S3 storage classes spanning 99x in per-GB price. Here's when Standard, Intelligent-Tiering, Standard-IA, One Zone-IA, Glacier Instant Retrieval, Glacier Flexible Retrieval, and Deep Archive each make sense, with lifecycle policy patterns.

The C3X Team··10 min read

Quick answer

Standard for hot data accessed multiple times per month. Intelligent-Tiering for data with unpredictable access patterns. Standard-IA for data accessed less than once a month. Glacier Instant for ms-retrieval cold data accessed less than once a quarter. Glacier Flexible or Deep Archive for compliance and long-term archive. Storage prices span 99x from Standard ($0.023/GB-month) to Deep Archive ($0.00099/GB-month).

S3 has six storage classes plus a high-performance Express One Zone option, each with different storage cost, retrieval fees, request fees, and minimum storage duration. Picking the right class for each workload can cut S3 costs by 50-95%. Lifecycle policies that automatically transition objects between classes amplify the savings further.

This post walks through each class with concrete numbers, retrieval economics, and the typical workloads each one wins for.

The full pricing table

Storage cost per GB-month in us-east-1 (other regions are within 10-30%):

  • Standard: $0.023/GB-month
  • Intelligent-Tiering Frequent Access: $0.023/GB-month
  • Intelligent-Tiering Infrequent Access: $0.0125/GB-month
  • Intelligent-Tiering Archive Instant Access: $0.004/GB-month
  • Standard-IA: $0.0125/GB-month
  • One Zone-IA: $0.01/GB-month
  • Glacier Instant Retrieval: $0.004/GB-month
  • Glacier Flexible Retrieval: $0.0036/GB-month
  • Glacier Deep Archive: $0.00099/GB-month

The cheapest (Deep Archive) is roughly 99x cheaper than the most expensive (Standard) per GB. But retrieval fees, minimum storage durations, and request costs change the picture significantly.

Standard

The default. Right for data accessed multiple times per month. Web assets, transaction logs, hot data lake tables, application state, user-generated content with active access.

No retrieval fees. Higher request fees than archive classes but lower than other warm tiers. No minimum storage duration. Reads and writes are both cheap relatively.

Intelligent-Tiering

Auto-tiering. AWS monitors access patterns and moves objects between tiers. Standard pricing for actively accessed objects, cheaper for inactive.

Costs: $0.0025 per 1,000 objects per month for monitoring (rarely meaningful even for buckets with millions of objects), plus the per-tier storage rate. No retrieval fees from the Frequent and Infrequent tiers. Archive Instant Access tier has a small retrieval fee.

Right when: access patterns are unpredictable or unknown. For well-understood workloads, manually picking the tier saves a little vs Intelligent-Tiering. For everything else, Intelligent- Tiering removes the decision burden.

Standard-IA

Single-region replicated, infrequent access. 45% cheaper storage than Standard. $0.01/GB read fee. 30-day minimum storage.

Right when: you know the access pattern is <1 access per month per object, retrieval times need to be immediate (no warm-up), and you don't want Intelligent-Tiering's monitoring fee.

Common use cases: long-tail user content, backup files accessed rarely for compliance, audit logs.

One Zone-IA

Single-AZ replicated only. 20% cheaper than Standard-IA. Same retrieval fees and minimum.

Right when: you have multi-AZ durability handled at the application layer (e.g., processing pipelines that can regenerate the data) or the data isn't critical enough to need 99.99% cross-AZ durability.

Wrong when: data is irreplaceable. The AZ-level risk is real if AWS has a regional incident.

Glacier Instant Retrieval

Cold storage with millisecond retrieval. About 82% cheaper than Standard. 90-day minimum storage. $0.03/GB retrieval.

Right when: you have data you'll access less than once a quarter but need fast access when you do (compliance queries, intermittent analytical queries).

Glacier Flexible Retrieval

Cold storage with minutes-to-hours retrieval. About 85% cheaper than Standard. 90-day minimum storage. $0.01-$0.10/GB retrieval depending on Expedited (1-5 minutes), Standard (3-5 hours), or Bulk (5-12 hours).

Right when: data is rarely accessed and you can tolerate retrieval delays. Backups, archived application data, training datasets that occasionally need to be rerun.

Glacier Deep Archive

Cheapest tier. About 96% cheaper than Standard. 180-day minimum storage. $0.02-$0.025/GB retrieval. 12-hour retrieval time.

Right when: data is for long-term compliance, regulatory retention, or genuinely never-touched archives. Don't put data here that might need to be retrieved this week.

S3 Express One Zone

High-performance single-AZ class. Higher storage cost than Standard ($0.16/GB-month) but dramatically cheaper requests and single-digit-millisecond latency.

Right when: data is hot and request volume is high. Machine learning training datasets, real-time analytics scratch space, request-heavy workloads where Standard's request fees dominate.

The lifecycle policy pattern

Most production workloads benefit from automatic tier transitions via lifecycle policies. A common pattern for log/backup data:

resource "aws_s3_bucket_lifecycle_configuration" "logs" {
  bucket = aws_s3_bucket.logs.id

  rule {
    id     = "tier-down-old-logs"
    status = "Enabled"

    transition {
      days          = 30
      storage_class = "STANDARD_IA"
    }

    transition {
      days          = 90
      storage_class = "GLACIER"
    }

    transition {
      days          = 365
      storage_class = "DEEP_ARCHIVE"
    }

    expiration {
      days = 2555  # 7 years
    }
  }
}

Effect for 100 TB of cumulative log data after 5 years:

  • Without lifecycle: 100 TB × $0.023 × 12 = $27,600/year
  • With lifecycle (steady state): about 10 TB in Standard, 20 TB in Standard-IA, 50 TB in Glacier, 20 TB in Deep Archive
  • Effective monthly: 10×$0.023 + 20×$0.0125 + 50×$0.0036 + 20×$0.00099 = $0.69/TB-month avg
  • Annual cost: ~$830/year

Savings: 97% on storage. Implementation cost: 20 lines of Terraform.

What c3x estimates

c3x reads lifecycle policy configurations and applies expected storage tier distribution based on age. Specify expected average object age in c3x-usage.yml for the most accurate estimate:

# c3x-usage.yml
resource_usage:
  aws_s3_bucket.logs:
    standard_storage_gb: 10240   # 10 TB Standard
    standard_ia_storage_gb: 20480
    glacier_storage_gb: 51200
    deep_archive_storage_gb: 20480

c3x then estimates each tier's cost separately. For the full S3 pricing reference, see the aws_s3_bucket catalog page.

FAQ

How many S3 storage classes are there?

Six main classes: Standard (default), Intelligent-Tiering (auto-tiering), Standard-IA (infrequent access), One Zone-IA (single-AZ infrequent), Glacier Instant Retrieval (ms retrieval), Glacier Flexible Retrieval (minutes to hours), and Glacier Deep Archive (12-hour retrieval). Plus S3 Express One Zone for high-performance single-AZ workloads.

What's the cheapest S3 storage class?

Glacier Deep Archive at $0.00099/GB-month (about 99% cheaper than Standard's $0.023/GB-month). But it requires 180-day minimum storage and 12-hour retrieval times. For data you might need to access quickly, Glacier Instant Retrieval ($0.004/GB-month) is right. For active data with unpredictable access patterns, Intelligent-Tiering automatically picks the right tier.

When does Intelligent-Tiering save money?

For data with unpredictable access patterns. Intelligent-Tiering moves objects between Frequent and Infrequent Access tiers based on actual access. There's a small monitoring fee ($0.0025 per 1,000 objects), but the tier savings usually exceed it for objects accessed less than once a month. For data with known access patterns, picking the tier manually is slightly cheaper.

What are the early-deletion fees?

Standard-IA: 30-day minimum. Glacier Instant Retrieval: 90 days. Glacier Flexible Retrieval: 90 days. Glacier Deep Archive: 180 days. If you delete an object before its minimum, you're billed as if it stayed the full minimum. Lifecycle policies must respect these floors.

Do retrieval fees apply to all classes?

Standard and Intelligent-Tiering Frequent Access: no retrieval fees. Standard-IA and Intelligent-Tiering Infrequent: $0.01/GB read. Glacier Instant: $0.03/GB. Glacier Flexible: $0.01-$0.10/GB depending on tier (Expedited, Standard, Bulk). Glacier Deep Archive: $0.02-$0.025/GB. Plus per-request fees on top.

Should I use lifecycle policies?

Almost always yes for non-trivial workloads. Lifecycle policies automatically transition objects between classes as they age. A common pattern: Standard for 30 days, Standard-IA for 90 days, Glacier Flexible after that. For log data and backups, lifecycle policies can cut storage costs by 80-95% over time.

The decision framework

For most workloads, the picking algorithm is:

  1. If access pattern is unknown or unpredictable: Intelligent-Tiering.
  2. If access is multiple times per month: Standard.
  3. If access is <1/month but needs instant retrieval: Standard-IA (or One Zone-IA if multi-AZ durability isn't required).
  4. If access is <1/quarter but needs ms retrieval: Glacier Instant Retrieval.
  5. If access is rare and minutes-to-hours retrieval is fine: Glacier Flexible Retrieval.
  6. If access is essentially never (compliance archive): Glacier Deep Archive.

Combine with a lifecycle policy that ages data through these tiers automatically. Don't manually manage transitions; let AWS do it on a schedule.

For per-resource pricing reference including all storage classes, see the aws_s3_bucket catalog page. For the broader S3 cost picture including request fees and cross-region replication, see our post on NAT alternatives which covers VPC endpoints (the free S3 Gateway endpoint is one of the highest-ROI changes available).

Try C3X on your own Terraform

Free and open source. No API key required. One command to install, one command to estimate.