aws_efs_file_system cost estimation
A managed NFS file system for shared access from EC2, ECS, EKS, and Lambda. Priced per GB stored, with tiered storage classes.
An aws_efs_file_system is a managed NFS file system that can be mounted simultaneously from many EC2 instances, ECS tasks, EKS pods, and Lambda functions. Pricing is more expensive than S3 or EBS per GB but offers POSIX semantics and concurrent access.
EFS has four storage classes:
EFS Standard: $0.30/GB-month. Multi-AZ replicated by default. Right for active workloads.
EFS Standard-IA (Infrequent Access): $0.025/GB-month. Plus $0.01/GB read fee on access. Right for files accessed less than once a month.
EFS One Zone: $0.16/GB-month. Single-AZ for ~50% savings on Standard, but no cross-AZ durability.
EFS One Zone-IA: $0.0133/GB-month. Cheapest, single-AZ, with read fees on access.
Lifecycle Management automatically transitions files between tiers based on age. Without it, you pay Standard rates for everything.
Throughput modes affect billing too:
Elastic (default): no throughput provisioning, scales automatically. Free in steady-state but bursts can incur "burst credit" overage charges on heavy bursts.
Provisioned: pay for a fixed throughput level at $6/MB/s-month. Right for predictable high-throughput workloads.
Bursting: legacy mode tied to storage size. Mostly deprecated for new file systems.
c3x reads storage class and throughput mode. Capacity and read volume are usage-based via c3x-usage.yml.
Terraform example
A minimal but realistic configuration that C3X can estimate.
resource "aws_efs_file_system" "shared" {
creation_token = "shared-data"
performance_mode = "generalPurpose"
throughput_mode = "elastic"
encrypted = true
lifecycle_policy {
transition_to_ia = "AFTER_30_DAYS"
}
lifecycle_policy {
transition_to_archive = "AFTER_90_DAYS"
}
tags = {
Name = "shared-data"
}
}
resource "aws_efs_mount_target" "shared" {
count = length(aws_subnet.private)
file_system_id = aws_efs_file_system.shared.id
subnet_id = aws_subnet.private[count.index].id
security_groups = [aws_security_group.efs.id]
}Pricing dimensions
What you actually pay for when you provision aws_efs_file_system.
| Dimension | Unit | What's being charged |
|---|---|---|
| Standard storage | per GB-month | Multi-AZ storage for actively-accessed files. $0.30/GB-month in us-east-1 |
| Standard-IA storage | per GB-month + per GB read | Infrequent access tier. ~92% cheaper storage but $0.01/GB read fee. $0.025/GB-month + $0.01/GB read |
| One Zone storage | per GB-month | Single-AZ. ~50% cheaper than Standard but no cross-AZ durability. $0.16/GB-month |
| Provisioned throughput | per MB/s-month | Optional flat-rate throughput tier for predictable high-throughput workloads. $6.00/MB/s-month |
Optimization tips
Common ways to reduce aws_efs_file_system cost without changing the workload.
Enable lifecycle management to move cold files to IA
Up to 92% on storageEFS lifecycle policies automatically move files to Standard-IA after 30 days of no access. Storage savings can be 90%+ for write-once-read-rarely workloads.
Use One Zone for non-critical or replicated data
About 47%If your application replicates data at the application level (e.g., across multiple file systems) or the data is regeneratable, One Zone halves storage cost.
Avoid EFS for static-asset workloads
Workload-dependentEFS is expensive for use cases that don't need NFS semantics. For static assets, S3 is 10x cheaper. For shared databases, RDS or DynamoDB is better.
Use Elastic throughput mode
Avoid throughput overprovisioningProvisioned throughput is $6/MB/s-month. Most workloads' burst patterns don't justify it. Elastic mode is free unless you sustain very high throughput.
FAQ
When is EFS the right storage choice?
When you need POSIX file system semantics shared across multiple compute targets simultaneously. Use cases: shared developer home directories, container persistent volumes for stateful apps, legacy applications expecting NFS. For object storage or block storage, choose S3 or EBS instead.
How much does EFS-IA actually save?
Storage drops from $0.30 to $0.025/GB-month (92% off). But every read incurs $0.01/GB. The break-even is around 30 days between reads. For truly cold data, big savings. For occasionally-accessed data, do the math.
Does c3x include lifecycle transitions?
Yes. If lifecycle_policy is set on the file system and you specify average file age in c3x-usage.yml, c3x splits the per-GB cost across tiers.
What about EFS Replication?
EFS Replication creates a destination file system in another region for DR. The replica is billed at standard storage rates plus cross-region data transfer. c3x estimates each file system independently.
Related resources
Estimate this resource in your own Terraform
Free, open source, no API key. C3X parses your Terraform and shows line-item cost for every resource, including aws_efs_file_system.