Amazon S3 Storage Classes & Performance
Key concepts
S3 Standard, IA, One Zone-IA
S3 Glacier classes
S3 Intelligent-Tiering
Performance optimization (prefixes)
Request rate limits
Overview
Amazon Simple Storage Service (S3) is AWS's flagship object storage service, offering industry-leading scalability, data availability, security, and performance. Understanding S3 storage classes is critical for the SAA-C03 exam, as it directly impacts both cost optimization (Domain 4) and high-performance architecture design (Domain 3).
S3 provides multiple storage classes designed for different use cases, ranging from frequently accessed data requiring millisecond latency to long-term archives accessed once or twice a year. Choosing the right storage class can reduce costs by up to 95% while maintaining the durability and availability your application requires.
Key Principle
All S3 storage classes offer 11 nines (99.999999999%) durability. The differences lie in availability, retrieval times, and cost. Your storage class choice should be based on access patterns, not durability concerns.
S3 storage class questions appear frequently. Know the retrieval times, minimum storage durations, and when to use each class. Expect 4-6 questions specifically on S3 storage optimization.
Architecture Diagram
The following diagram illustrates the S3 storage classes and their relationship to access patterns:

Key Concepts
S3 Standard
S3 Standard
S3 Standard is the default storage class, optimized for frequently accessed data requiring low latency and high throughput.
Characteristics:
- Availability: 99.99% (designed for)
- Durability: 99.999999999% (11 nines)
- Retrieval Time: Milliseconds
- Minimum Storage Duration: None
- Retrieval Fee: None
Best For:
- Dynamic websites and content distribution
- Mobile and gaming applications
- Big data analytics
- Any workload with frequent, unpredictable access patterns
S3 Intelligent-Tiering
S3 Intelligent-Tiering
S3 Intelligent-Tiering automatically moves data between access tiers based on changing access patterns, optimizing costs without performance impact or operational overhead.
Access Tiers:
- Frequent Access - Data accessed regularly (default)
- Infrequent Access - Data not accessed for 30 days
- Archive Instant Access - Data not accessed for 90 days (optional)
- Archive Access - Data not accessed for 90-730 days (optional)
- Deep Archive Access - Data not accessed for 180-730 days (optional)
Key Benefits:
- No retrieval fees when data moves between tiers
- No minimum storage duration
- Automatic cost optimization (typically 20-40% savings)
- Small monthly monitoring fee per object
Best For:
- Workloads with unknown or changing access patterns
- Data lakes with mixed access frequencies
- Long-lived data where access patterns are unpredictable
S3 Standard-IA (Infrequent Access)
S3 Standard-IA
S3 Standard-IA is designed for data accessed less frequently but requiring rapid access when needed.
Characteristics:
- Availability: 99.9%
- Retrieval Time: Milliseconds
- Minimum Storage Duration: 30 days
- Minimum Object Size: 128 KB (billed)
- Retrieval Fee: Per-GB charge
Best For:
- Backups and disaster recovery
- Long-term storage for infrequently accessed files
- Data requiring immediate access but accessed less than once a month
S3 One Zone-IA
S3 One Zone-IA
S3 One Zone-IA stores data in a single Availability Zone, offering 20% lower cost than Standard-IA.
Characteristics:
- Availability: 99.5%
- Durability: 99.999999999% (within single AZ)
- Risk: Data lost if AZ is destroyed
- Minimum Storage Duration: 30 days
Best For:
- Secondary backup copies
- Easily reproducible data
- Data that can tolerate lower availability
- Cost-sensitive infrequent access workloads
S3 Glacier Storage Classes
S3 Glacier Family
The Glacier family provides low-cost archive storage for long-term retention.
Three Glacier Options:
| Class | Retrieval Time | Min Duration | Use Case | |-------|---------------|--------------|----------| | Glacier Instant Retrieval | Milliseconds | 90 days | Archives needing immediate access | | Glacier Flexible Retrieval | 1-5 min to 5-12 hours | 90 days | Flexible archive access | | Glacier Deep Archive | 12-48 hours | 180 days | Long-term compliance archives |
Glacier Flexible Retrieval Options:
- Expedited: 1-5 minutes (highest cost)
- Standard: 3-5 hours
- Bulk: 5-12 hours (lowest cost, free tier available)
S3 Storage Classes Comparison
| Storage Class | Availability | Min Duration | Retrieval Time | Use Case |
|---|---|---|---|---|
| S3 Standard | 99.99% | None | Milliseconds | Frequent access, dynamic content |
| S3 Intelligent-Tiering | 99.9% | None | Milliseconds* | Unknown/changing patterns |
| S3 Standard-IA | 99.9% | 30 days | Milliseconds | Infrequent but immediate access |
| S3 One Zone-IA | 99.5% | 30 days | Milliseconds | Reproducible infrequent data |
| Glacier Instant Retrieval | 99.9% | 90 days | Milliseconds | Archive with instant access |
| Glacier Flexible Retrieval | 99.99% | 90 days | 1 min - 12 hours | Flexible archive retrieval |
| Glacier Deep Archive | 99.99% | 180 days | 12-48 hours | Long-term compliance |
How It Works
Storage Class Selection Flow
Use this decision flow to select the appropriate storage class:

Pricing Structure
S3 Pricing Components (US East - N. Virginia)
| Storage Class | Storage ($/GB/month) | Retrieval ($/GB) | Request Pricing |
|---|---|---|---|
| S3 Standard | $0.023 | None | $0.0004/1000 GET |
| S3 Standard-IA | $0.0125 | $0.01 | $0.001/1000 GET |
| S3 One Zone-IA | $0.01 | $0.01 | $0.001/1000 GET |
| Glacier Instant Retrieval | $0.004 | $0.03 | $0.01/1000 GET |
| Glacier Flexible Retrieval | $0.0036 | $0.01-0.03 | $0.03/1000 GET |
| Glacier Deep Archive | $0.00099 | $0.02 | $0.025/1000 GET |
Cost Savings Example
Storing 1 TB in US East-1:
- S3 Standard: ~$23/month
- Glacier Deep Archive: ~$1/month
That's a 95% cost reduction for archive data!
S3 Performance Optimization
Amazon S3 automatically scales to handle high request rates:

Request Rate Performance
S3 Request Rate Limits
S3 automatically scales to support high request rates:
- 3,500 PUT/COPY/POST/DELETE requests per second per prefix
- 5,500 GET/HEAD requests per second per prefix
- No limit on the number of prefixes in a bucket
Scaling Strategy: Distribute objects across multiple prefixes to multiply your request rate capacity. For example, 10 prefixes = 55,000 GET requests/second.
# Poor design - single prefix bottleneck
s3://mybucket/images/image1.jpg
s3://mybucket/images/image2.jpg
# Better design - date-based prefixes
s3://mybucket/2024/01/15/image1.jpg
s3://mybucket/2024/01/16/image2.jpg
# Best design - hash-based prefixes for random distribution
s3://mybucket/a1b2c3/image1.jpg
s3://mybucket/d4e5f6/image2.jpgMultipart Upload
Multipart Upload
Multipart upload enables parallel uploads of large objects in parts, improving throughput and reliability.
Key Facts:
- Recommended: For objects > 100 MB
- Required: For objects > 5 GB (max single PUT is 5 GB)
- Maximum object size: 5 TB
- Part size: 5 MB to 5 GB
- Maximum parts: 10,000
Benefits:
- Parallel uploads for faster throughput
- Resume interrupted uploads
- Begin upload before knowing final size
# Configure AWS CLI for optimal multipart uploads
aws configure set default.s3.max_concurrent_requests 20
aws configure set default.s3.multipart_threshold 64MB
aws configure set default.s3.multipart_chunksize 16MB
# Upload large file with multipart
aws s3 cp large-file.zip s3://mybucket/large-file.zipS3 Transfer Acceleration
S3 Transfer Acceleration
Transfer Acceleration uses CloudFront edge locations to speed up long-distance transfers.
How It Works:
- Data uploads to nearest CloudFront edge location
- AWS backbone network routes data to S3 bucket
- Optimized network path reduces latency
Performance Gains:
- 50-500% faster for long-distance transfers
- Most effective for uploads > 1 GB over long distances
- Additional cost: $0.04-0.08/GB transferred
When to Use:
- Global users uploading to centralized bucket
- Regular transfers across continents
- Large file transfers where speed matters
Use Cases
Use Case 1: Media Company Content Library
Scenario: A media company stores video content that is popular when first released, then accessed infrequently.
Solution:
- Upload new content to S3 Standard
- Use Lifecycle Policy to transition to S3 Standard-IA after 30 days
- Move to Glacier Instant Retrieval after 90 days
- Archive to Glacier Deep Archive after 1 year
{
"Rules": [
{
"ID": "MediaContentLifecycle",
"Status": "Enabled",
"Filter": { "Prefix": "videos/" },
"Transitions": [
{ "Days": 30, "StorageClass": "STANDARD_IA" },
{ "Days": 90, "StorageClass": "GLACIER_IR" },
{ "Days": 365, "StorageClass": "DEEP_ARCHIVE" }
]
}
]
}Use Case 2: Data Lake with Unknown Access Patterns
Scenario: Analytics team stores data that may or may not be accessed, with unpredictable patterns.
Solution:
- Use S3 Intelligent-Tiering to automatically optimize costs
- Enable Archive Access tiers for data older than 90 days
- No operational overhead required
Use Case 3: Global Application with User Uploads
Scenario: Mobile app users worldwide upload profile images and documents.
Solution:
- Enable S3 Transfer Acceleration on the bucket
- Configure Multipart Upload for files > 100 MB
- Use S3 Standard for active user content
- Lifecycle to S3 One Zone-IA for inactive accounts (30+ days)
Best Practices
S3 Storage Class Best Practices
- Analyze Access Patterns First - Use S3 Storage Class Analysis to understand your data access patterns before choosing storage classes
- Use Intelligent-Tiering for Unknown Patterns - When access patterns are unpredictable, let S3 optimize automatically
- Implement Lifecycle Policies - Automate transitions between storage classes based on object age
- Consider Retrieval Costs - Factor in retrieval fees when estimating total cost for IA and Glacier classes
- Use Multipart Upload for Large Objects - Always use multipart for objects > 100 MB
- Enable Transfer Acceleration for Global Access - Worth the cost for geographically distributed users
- Distribute Prefixes for High Request Rates - Avoid single-prefix bottlenecks
Common Exam Scenarios
Exam Scenarios and Solutions
| Scenario | Solution | Why |
|---|---|---|
| Company needs lowest cost for compliance archives accessed once per year | S3 Glacier Deep Archive | Lowest cost ($0.00099/GB), 12-hour retrieval acceptable for rare access |
| Data lake with unpredictable access patterns | S3 Intelligent-Tiering | Automatic optimization without operational overhead |
| Backup data needing immediate access when restored | S3 Standard-IA or Glacier Instant Retrieval | Millisecond retrieval with lower storage cost |
| Secondary backup copies that can be recreated | S3 One Zone-IA | 20% cheaper than Standard-IA, acceptable risk for reproducible data |
| Global users uploading large files | S3 Transfer Acceleration + Multipart Upload | Reduces latency via edge locations, improves throughput |
| High-traffic image hosting website | S3 Standard with prefix distribution | 5,500 GET/s per prefix, distribute across prefixes for scale |
Common Pitfalls
Pitfall 1: Ignoring Minimum Storage Duration
Mistake: Transitioning objects to Glacier then deleting them before the minimum storage duration.
Why it's costly:
- Glacier Flexible Retrieval: 90-day minimum
- Glacier Deep Archive: 180-day minimum
- Early deletion incurs charges for remaining days
Correct Approach:
- Calculate total cost including minimum duration charges
- Only use Glacier for truly long-term data
- Consider Intelligent-Tiering for uncertain retention periods
Pitfall 2: Using Standard-IA for Frequently Accessed Data
Mistake: Moving data to Standard-IA when it's still accessed multiple times per month.
Why it's costly:
- Per-GB retrieval fees add up quickly
- Higher per-request costs
- May exceed S3 Standard costs
Correct Approach:
- Use S3 Storage Class Analysis to identify true access patterns
- Only transition data accessed < once per month
- Consider Intelligent-Tiering for borderline cases
Pitfall 3: Single Prefix Bottleneck
Mistake: Storing all objects under a single prefix for high-throughput workloads.
Why it fails:
- Limited to 3,500 PUT or 5,500 GET per second per prefix
- Creates performance bottleneck at scale
Correct Approach:
- Distribute objects across multiple prefixes
- Use hash-based or date-based prefixing strategies
- Scale linearly with number of prefixes
Test Your Knowledge
A company stores 10 TB of log files that are accessed daily for the first week, then rarely accessed for compliance retention of 7 years. Which storage strategy is MOST cost-effective?
An application requires storing 500 GB of data with unpredictable access patterns. Some data is accessed frequently while other data is rarely touched. Which S3 storage class is BEST suited?
What is the maximum request rate per prefix for S3 GET requests?
A company needs to upload 50 GB files from users in Asia to an S3 bucket in us-east-1. Which features should be enabled to MAXIMIZE upload performance?
Related Services
Quick Reference
S3 Limits
S3 Service Limits
| Resource | Limit |
|---|---|
| Maximum object size | 5 TB |
| Maximum single PUT upload | 5 GB |
| Multipart upload part size | 5 MB - 5 GB |
| Maximum parts per multipart upload | 10,000 |
| GET requests per prefix/second | 5,500 |
| PUT requests per prefix/second | 3,500 |
| Buckets per account | 100 (soft limit) |
| Objects per bucket | Unlimited |
Storage Class Quick Comparison
At-a-Glance Storage Class Selection
| Access Pattern | Recommended Class |
|---|---|
| Frequent access, low latency | S3 Standard |
| Unknown or changing patterns | S3 Intelligent-Tiering |
| Accessed < once/month, immediate retrieval | S3 Standard-IA |
| Reproducible data, < once/month | S3 One Zone-IA |
| Archive, instant retrieval needed | Glacier Instant Retrieval |
| Archive, flexible retrieval OK | Glacier Flexible Retrieval |
| Long-term compliance, rare access | Glacier Deep Archive |