AWSAmazon EFSStorage

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.

DimensionUnitWhat's being charged
Standard storageper GB-monthMulti-AZ storage for actively-accessed files.
$0.30/GB-month in us-east-1
Standard-IA storageper GB-month + per GB readInfrequent access tier. ~92% cheaper storage but $0.01/GB read fee.
$0.025/GB-month + $0.01/GB read
One Zone storageper GB-monthSingle-AZ. ~50% cheaper than Standard but no cross-AZ durability.
$0.16/GB-month
Provisioned throughputper MB/s-monthOptional 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 storage

EFS 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-dependent

EFS 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 overprovisioning

Provisioned 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.