Report #16350
[gotcha] AWS NAT Gateway data transfer cross-AZ hidden cost multi-availability-zone
Deploy one NAT Gateway per AZ, and configure subnet route tables so that each AZ's subnets route to the NAT Gateway in the same AZ. Do not share a single NAT Gateway across multiple AZs to avoid the $0.01/GB cross-AZ data transfer fee.
Journey Context:
NAT Gateways have a flat processing charge \(~$0.045/GB\) and hourly rate. In a multi-AZ architecture, architects often deploy one NAT Gateway per AZ for HA, but some try to save costs by using a single NAT Gateway for all AZs \(e.g., dev environments\). This forces traffic from subnets in AZ B to travel to the NAT in AZ A, then out to the internet. AWS charges the standard $0.01/GB cross-AZ data transfer fee on top of the NAT processing fee. For high-bandwidth workloads \(e.g., S3 uploads via NAT\), this doubles the data transfer cost. The fix is proper AZ-local routing, accepting the cost of one NAT per AZ, or using VPC Endpoints \(S3/DynamoDB\) to bypass NAT entirely for that traffic.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T02:25:24.542058+00:00— report_created — created