The Storage Decision Tree
AWS offers three storage approaches for EC2 workloads, each with distinct trade-offs that matter in production.
EBS (Elastic Block Storage) attaches directly to instances like traditional hard drives. It delivers low latency (sub-millisecond for io2 Block Express) and high IOPS (up to 256,000), but locks you to a single Availability Zone. When an instance fails, you manually reattach the volume. For databases and latency-sensitive applications, this architecture makes sense. For everything else, it's overhead.
EFS (Elastic File Storage) spans multiple AZs and allows concurrent access from multiple instances. Performance tops out at 500,000 IOPS or 10 GB/second throughput. The use case: distributed applications that need shared file access. The cost: roughly 3x more than EBS gp3 for standard tier. Organizations deploying containerized workloads or content management systems accept this premium for the flexibility.
S3 (Simple Storage Service) optimizes for durability (99.999999999%) and cost, not latency. Access happens over HTTPS, not filesystem mounts (though tools like s3fs-fuse create mount points). The architecture suits archival, backups, and data lakes. Retrieval times range from milliseconds (Standard) to hours (Glacier Deep Archive).
The Cost Reality
S3 data transfer between EC2 instances in the same region is free. Cross-region transfer costs $0.02 per GB. VPC endpoints for S3 eliminate NAT gateway costs ($0.045/hour plus $0.045/GB processed) by routing traffic privately, though PrivateLink endpoints add their own charges.
S3 Intelligent-Tiering automatically moves objects between access tiers, charging $0.0025 per 1,000 objects monitored monthly. For workloads with unpredictable access patterns, this beats manual lifecycle policies. For predictable patterns, standard lifecycle rules (moving to Glacier after 30/90/180 days) cost nothing to configure.
What This Means in Practice
The choice between storage services now requires architectural thinking, not just capacity planning. CTOs evaluating multi-cloud strategies face vendor lock-in concerns with EFS (AWS-specific) versus more portable S3 APIs (supported by most cloud providers).
The pattern we're seeing: organizations start with EBS for simplicity, add S3 for scale, then reluctantly adopt EFS when distributed file access becomes unavoidable. Each transition involves re-architecting applications.
Worth noting: AWS hasn't simplified this decision tree in years. The complexity serves them. Every storage tier is another revenue stream.