Back to Engineering Insights
Cloud Cost Optimization
Apr 27, 2026
By Ravi Kanani

AWS Data Transfer Pricing in 2026: Every Egress Fee, Inter-AZ Cost, and Hidden Network Charge

AWS Data Transfer Pricing in 2026: Every Egress Fee, Inter-AZ Cost, and Hidden Network Charge
Key Takeaway

AWS internet egress costs $0.09/GB for the first 10TB/month in 2026, dropping to $0.085/GB at 10-50TB and $0.07/GB at 150TB+. Inter-AZ transfer costs $0.01/GB each direction ($0.02 round-trip). NAT Gateway charges $0.045/GB processed plus $0.045/hour. The biggest hidden cost is cross-AZ traffic in Kubernetes clusters and microservices: a busy EKS cluster with 10TB/month inter-AZ traffic pays $200/month in network fees alone. VPC endpoints ($0.01/GB) save 78% vs NAT Gateway for AWS service traffic.

The Line Item Nobody Reads Until It Is 40% of the Bill

Here is something that surprises most engineering teams: data transfer is the third largest line item on the average AWS bill, behind compute and storage. For distributed architectures (microservices, multi-AZ, multi-region), it can climb to 30-40% of total spend.

The reason it sneaks up on you: data transfer does not appear in your architecture diagrams. You draw boxes for EC2 instances, RDS databases, and S3 buckets. You estimate CPU and disk. But the arrows between those boxes? Nobody prices those. Until the bill arrives.

A single Kubernetes cluster spread across 3 Availability Zones with 50 services talking to each other can generate 5-10TB of inter-AZ traffic per month. At $0.02/GB round-trip, that is $100-200/month in pure network costs before a single byte leaves AWS. Add NAT Gateway for outbound internet access and cross-region replication for disaster recovery, and data transfer easily crosses $1,000/month for a mid-size deployment.

We see this constantly at LeanOps. A client comes in asking about EC2 rightsizing, and we find that 25% of their bill is data transfer they did not know they were paying for. This post maps out every AWS data transfer charge in 2026, shows you where the money actually goes, and gives you the specific architectural changes that cut network costs by 40-70%.


AWS Data Transfer Pricing: Complete 2026 Rate Card

Internet Egress (Data Transfer OUT to Internet)

This is what most people think of when they say "AWS egress." Any data that leaves AWS to the public internet.

Monthly VolumeRate per GBCost per TB
First 100 GBFreeFree
100 GB - 10 TB$0.09$92.16
10 TB - 50 TB$0.085$87.04
50 TB - 150 TB$0.07$71.68
150 TB - 500 TB$0.05$51.20
500 TB+Contact AWSNegotiable

Key details:

  • The 100GB free tier is per account, per month, across all services
  • Rates are the same for EC2, S3, RDS, Lambda, and all other services
  • Pricing above is for US East (N. Virginia). Some regions are 10-20% more expensive
  • South America (Sao Paulo) is the most expensive region at $0.15/GB

Data Transfer IN (Internet to AWS)

DirectionRate
All data transfer INFree
S3 Transfer Acceleration IN$0.04/GB (optional acceleration premium)

Data into AWS is always free. This is intentional. AWS wants your data inside their network. Getting it out is where they charge.

Inter-Region Data Transfer

DirectionRate per GBNotes
US East to US West$0.02Same continent
US to Europe$0.02Cross-continent
US to Asia Pacific$0.09Premium rate
Europe to Asia Pacific$0.09Premium rate
Any region to same region$0Same-region is free (within same AZ)

Real cost example: Replicating a 5TB RDS database from us-east-1 to eu-west-1 for disaster recovery costs $100/month in ongoing replication traffic. If you replicate both directions (active-active), that doubles to $200/month in network fees alone.

Inter-AZ Data Transfer (Same Region)

DirectionRate per GBNotes
EC2 to EC2 (different AZ)$0.01 each direction$0.02 round-trip
EC2 to RDS (different AZ)$0.01 each directionMulti-AZ RDS included
EC2 to ElastiCache (different AZ)$0.01 each directionCluster mode
Same AZFreeAlways free within AZ

This is the silent killer. $0.01/GB seems negligible. But consider:

  • An EKS cluster with 50 pods across 3 AZs, each making 1,000 requests/second to other pods
  • Average request + response size: 10KB
  • Monthly inter-AZ traffic: 50 pods x 1,000 req/s x 10KB x 86,400s x 30 days x 0.67 (probability of cross-AZ) = ~8.6 TB
  • Cost: 8.6 TB x $0.02/GB (round-trip) = $172/month

For a "free" Kubernetes networking feature, $172/month adds up fast across multiple clusters.

NAT Gateway Pricing

ComponentRateMonthly (24/7)
Hourly charge$0.045/hour$32.40/month
Data processed$0.045/GBVaries
Data processed (same AZ)$0.045/GBSame rate regardless

NAT Gateway total cost formula:

Total = $32.40/month + ($0.045 x GB processed)

Monthly TrafficNAT Gateway CostJust Egress Would Cost
100 GB$37$9
500 GB$55$45
1 TB$78$92
5 TB$257$450
10 TB$482$900

At low volume, NAT Gateway's fixed hourly cost dominates. At high volume, its per-GB rate ($0.045) stacks on top of the internet egress rate ($0.09), making total outbound cost $0.135/GB. That is 50% more than egress alone.

VPC Endpoint Pricing

Endpoint TypeHourly CostPer-GB CostServices
Gateway EndpointFreeFreeS3, DynamoDB only
Interface Endpoint$0.01/hour ($7.20/month)$0.01/GBSQS, SNS, KMS, ECR, CloudWatch, etc.

This is free money. Gateway endpoints for S3 and DynamoDB cost absolutely nothing. If your EC2 instances or Lambda functions access S3 through a NAT Gateway, you are paying $0.045/GB for something that should cost $0.

For Interface Endpoints (other services), the math:

  • NAT Gateway: $0.045/GB processed
  • Interface Endpoint: $0.01/GB processed
  • Savings: 78% per GB

At 1TB/month of SQS/SNS/KMS traffic, that is $35/month saved per endpoint.

CloudFront (CDN) Data Transfer

VolumeCloudFront to InternetOrigin Fetch (CloudFront to S3/EC2)
First 10 TB$0.085/GBFree (from S3)
10-50 TB$0.080/GBFree (from S3)
50-150 TB$0.060/GBFree (from S3)
150-500 TB$0.040/GBFree (from S3)

CloudFront egress is cheaper than direct EC2/S3 egress at every tier:

  • At 10TB: CloudFront saves $0.005/GB = $50/month
  • At 50TB: CloudFront saves $0.01/GB = $500/month
  • At 150TB: CloudFront saves $0.03/GB = $4,500/month

Plus, CloudFront caches content. If your cache hit ratio is 80%, you only fetch 20% from origin. That means 80% of your bytes cost only the CloudFront egress rate, not the origin transfer.

S3-Specific Transfer Costs

Transfer TypeCost
S3 to InternetStandard egress rates above
S3 to CloudFrontFree
S3 to EC2 (same region)Free
S3 to EC2 (different region)$0.02/GB
S3 Transfer Acceleration+$0.04/GB (on top of egress)
S3 Cross-Region Replication$0.02/GB (inter-region rate)
S3 Same-Region Replication$0.015/GB

Real-World Cost Modeling: Where Data Transfer Money Actually Goes

Scenario 1: Typical SaaS Backend (Medium)

A 3-AZ EKS cluster with 30 microservices, PostgreSQL RDS (Multi-AZ), ElastiCache cluster, S3 for assets, and moderate internet traffic.

Transfer TypeMonthly VolumeRateMonthly Cost
Internet egress (API responses)2 TB$0.09/GB$184
Inter-AZ (pod-to-pod)5 TB$0.02/GB (round-trip)$100
Inter-AZ (app-to-RDS)1 TB$0.02/GB$20
Inter-AZ (app-to-ElastiCache)2 TB$0.02/GB$40
NAT Gateway (outbound API calls)500 GB$0.045/GB + hourly$55
S3 to EC2 (same region)3 TBFree$0
Total$399/month

Almost $400/month in pure network costs. The inter-AZ traffic alone is $160/month across three line items. Most teams have no idea they are paying this.

Scenario 2: Content-Heavy Platform (Media/CDN)

A video streaming or media platform serving 50TB/month of content globally, with origin in us-east-1.

Transfer TypeMonthly VolumeRateMonthly Cost
CloudFront egress (cached)40 TB (80% cache hit)$0.080/GB avg$3,200
CloudFront origin fetch10 TBFree (S3 to CF)$0
S3 cross-region replication (DR)5 TB$0.02/GB$100
API egress (non-CDN)1 TB$0.09/GB$92
NAT Gateway (webhooks, APIs)200 GB$0.045/GB + hourly$41
Total~$3,433/month

Without CloudFront, serving 50TB directly from S3 would cost: 50TB x $0.085/GB = $4,250/month. CloudFront saves roughly $800/month AND improves latency.

Scenario 3: Multi-Region Disaster Recovery

An enterprise application with active-passive DR across two regions (us-east-1 primary, eu-west-1 secondary).

Transfer TypeMonthly VolumeRateMonthly Cost
RDS cross-region replication2 TB$0.02/GB$40
S3 cross-region replication10 TB$0.02/GB$200
DynamoDB Global Tables500 GB$0.02/GB$10
ElastiCache Global Datastore1 TB$0.02/GB$20
Internet egress (primary region)5 TB$0.09/GB$450
Inter-AZ (primary cluster)3 TB$0.02/GB$60
NAT Gateway (primary)1 TB$0.045/GB + hourly$78
Total~$858/month

Cross-region replication alone is $270/month. That is the cost of disaster recovery in data transfer. The question is whether your RPO/RTO requirements justify replicating everything or just critical data.


AWS Data Transfer Cost Optimization: 8 Strategies That Work

1. Deploy VPC Gateway Endpoints for S3 and DynamoDB (Free)

If your workloads access S3 or DynamoDB and traffic routes through a NAT Gateway, you are paying $0.045/GB for what should cost $0.

Savings at 5TB/month S3 traffic: $225/month (eliminates NAT processing for S3)

Implementation: one CloudFormation resource, zero application changes.

Type: AWS::EC2::VPCEndpoint
Properties:
  VpcId: !Ref VPC
  ServiceName: com.amazonaws.us-east-1.s3
  RouteTableIds:
    - !Ref PrivateRouteTable

2. Use Interface Endpoints for High-Volume AWS Services

For services like ECR, SQS, SNS, KMS, and CloudWatch Logs, Interface Endpoints cost $0.01/GB vs NAT Gateway's $0.045/GB.

Break-even: An Interface Endpoint costs $7.20/month in hourly charges. At $0.035/GB savings, you break even at 206 GB/month. Anything above that is pure savings.

3. Consolidate to Fewer AZs Where Possible

Not every workload needs 3-AZ redundancy. Development environments, batch processing, and non-critical services can run in a single AZ.

The trade-off is real: single-AZ means an AZ failure takes down that workload. For production, keep multi-AZ. For dev/staging/batch, single-AZ saves 100% of inter-AZ costs.

4. Enable Topology-Aware Routing in Kubernetes

EKS supports topology-aware routing that preferentially sends traffic to pods in the same AZ. Instead of random load balancing across AZs (default), traffic stays local when possible.

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.kubernetes.io/topology-mode: Auto

This typically reduces inter-AZ traffic by 60-80% in multi-AZ clusters without sacrificing availability.

5. Put CloudFront in Front of Everything Internet-Facing

Even if your content is not cacheable (dynamic APIs), CloudFront egress is cheaper than direct EC2 egress:

  • EC2: $0.09/GB
  • CloudFront: $0.085/GB

For 10TB/month of API traffic, that is $50/month saved just by routing through CloudFront. If even 10% of responses are cacheable (health checks, static configs, repeated queries), the savings multiply.

6. Audit Cross-Region Replication

Many teams enable cross-region replication during initial setup and never revisit it. Common waste patterns:

  • Replicating non-critical S3 buckets (logs, temp data) to DR region
  • Global Tables on DynamoDB tables that only serve one region
  • ElastiCache Global Datastore for caches that can be rebuilt in minutes

Ask for each replicated resource: "If this region fails, do we need this data available in under X minutes?" If the answer is "we can rebuild it," stop replicating it.

7. Use S3 Transfer Acceleration Only When Needed

Transfer Acceleration adds $0.04/GB on top of standard egress. It is worth it for:

  • Large file uploads from distant regions (speeds up upload by 50-500%)
  • Real-time data ingestion from global sources

It is NOT worth it for:

  • Transfers within the same continent (minimal speed improvement)
  • Small files (overhead negates benefit)
  • Any workload where latency is not critical

8. Negotiate Private Pricing at 50TB+

AWS offers private pricing for data transfer at scale. If you transfer 50TB+/month consistently:

  • Standard: $0.07/GB (50-150TB tier)
  • Negotiated: $0.04-0.05/GB (typical enterprise discount)
  • Savings at 100TB/month: $2,000-3,000/month

Engage your AWS account team. Data transfer is one of the most negotiable line items.


AWS vs GCP vs Azure: Data Transfer Cost Comparison

Transfer TypeAWSGoogle CloudAzureCloudflare R2
Internet egress (first 10TB)$0.09/GB$0.12/GB$0.087/GBFree
Internet egress (50-150TB)$0.07/GB$0.08/GB$0.05/GBFree
Inter-AZ$0.01/GB each wayFree (within zone group)Free (within region)N/A
Inter-region (same continent)$0.02/GB$0.01/GB$0.02/GBN/A
NAT Gateway equivalent$0.045/GB + $0.045/hr$0.045/GB + $0.044/hr$0.045/GB + $32/moN/A
CDN egress (first 10TB)$0.085/GB$0.08/GB$0.081/GBFree

Key takeaways:

  • GCP charges more for basic egress ($0.12 vs $0.09) but inter-AZ is free
  • Azure and AWS are nearly identical for egress
  • GCP inter-AZ being free is a massive advantage for distributed architectures (no Kubernetes cross-AZ penalty)
  • At high volume (150TB+), Azure is cheapest among the big three
  • Cloudflare R2 is free egress but limited to object storage use cases

For a detailed comparison of all three major clouds, see our AWS vs Azure vs GCP cost comparison.


The Hidden Costs Most Teams Miss

1. NAT Gateway as Default Route

The most common architecture mistake: putting all private subnet traffic through NAT Gateway. Every API call to AWS services (S3, SQS, DynamoDB, ECR image pulls) goes through NAT at $0.045/GB.

Fix: VPC endpoints for AWS services. Keep NAT only for genuine third-party internet traffic.

2. Multi-AZ RDS Read Replicas

A Multi-AZ RDS deployment with a read replica in a third AZ means:

  • Primary to standby (synchronous): $0.01/GB each way
  • Primary to read replica (asynchronous): $0.01/GB each way
  • Application to read replica (cross-AZ): $0.01/GB each way

For a database doing 500GB/month of replication and 1TB/month of queries to the replica: $30/month in hidden network fees.

3. ECR Image Pulls Through NAT

Every time a Kubernetes pod starts, it pulls a container image from ECR. If ECR traffic routes through NAT Gateway:

  • Average image size: 500MB
  • 100 pod restarts/day x 500MB x 30 days = 1.5TB/month
  • NAT cost: $67.50/month just for container image pulls

Fix: ECR Interface Endpoint ($7.20/month fixed) eliminates this entirely.

4. CloudWatch Logs Egress

CloudWatch Logs export and cross-account sharing counts as data transfer. Teams shipping 1TB/month of logs to a central account or third-party tool (Datadog, Grafana) pay $90/month in transfer alone, on top of CloudWatch ingestion charges.


The Bottom Line

Data transfer is the AWS cost category with the highest savings potential per engineering hour invested. A senior engineer spending 4 hours setting up VPC endpoints and enabling topology-aware routing can save $200-500/month permanently. That is $2,400-6,000/year from a single afternoon of work.

The three highest-impact changes for most teams:

  1. VPC Gateway Endpoints for S3/DynamoDB (free, saves $0.045/GB)
  2. Topology-aware routing in EKS (config change, saves 60-80% inter-AZ)
  3. CloudFront for internet-facing traffic (cheaper egress + caching benefit)

If your AWS data transfer bill exceeds $500/month, our team at LeanOps typically finds 40-70% in savings through architecture changes and endpoint optimization. Get a free Cloud Waste Assessment and we will map exactly where your network dollars are going.


Further reading:

Frequently Asked Questions

Stop Overpaying for Cloud Infrastructure

Our clients save 30-60% on their cloud bill within 90 days. Get a free Cloud Waste Assessment and see exactly where your money is going.