Service comparisons / Amazon EFS vs Amazon FSx vs Amazon S3
EFS vs FSx vs S3
Amazon EFS is a shared Linux file system, the FSx family covers Windows, high-performance and NetApp workloads, and S3 is object storage accessed through an API. Which storage fits which scenario.
Last checked against AWS documentation · How we write our content
| Question | Amazon EFS | Amazon FSx | Amazon S3 |
|---|---|---|---|
| Use it when | Many Linux instances, containers or Lambda functions need the same files | You need a specific file system, such as Windows SMB, Lustre for HPC, NetApp ONTAP or OpenZFS | You store objects (images, backups, data lake files) and read them through an API |
| Access | NFS, POSIX permissions, mounted like a disk | SMB with Active Directory, Lustre, NFS, SMB or iSCSI depending on the type | HTTPS API (GET, PUT), not a mounted file system |
| Scaling | Grows and shrinks automatically | You choose capacity and throughput (some types scale automatically) | Practically unlimited |
| Availability | Regional (multi-AZ) by default, or One Zone for lower cost | Single-AZ or Multi-AZ deployments, depending on the type | Data stored across at least three AZs (except One Zone classes) |
| Watch out for | No Windows support; use FSx for Windows File Server | Pick the type from the protocol the scenario names | Not a drop-in replacement for an app that expects a file system |
Storage questions usually describe the access pattern in plain words. Spot the protocol or the operating system in the scenario, and the answer follows.
How to choose
- “Shared file system” for Linux, “POSIX”, “NFS”, or many instances in several AZs: EFS.
- “Windows”, “SMB”, “Active Directory”, “DFS”: FSx for Windows File Server.
- “High-performance computing”, “machine learning training”, “sub-millisecond”, “Lustre”, or “process data that lives in S3 as files”: FSx for Lustre, which can link to an S3 bucket.
- “NetApp”, “ONTAP”, “multiprotocol”, or moving an existing NAS with snapshots and replication: FSx for NetApp ONTAP.
- Images, videos, backups, logs, static websites, data lakes: S3.
Exam traps
- EBS is block storage attached to one instance (Multi-Attach is limited to io1 and io2 in one AZ), so it’s wrong for “shared across many instances”.
- For EFS files that are rarely read, lifecycle management moves them to Infrequent Access or Archive storage classes to cut cost.
- “On-premises apps need low-latency access to files in S3” points to Storage Gateway (S3 File Gateway), not EFS.