Report #5818
[gotcha] Single NAT Gateway design causing unexpected cross-AZ data transfer charges
Deploy one NAT Gateway per Availability Zone \(AZ\) and ensure routing tables target the local AZ's NAT Gateway. Accept the hourly cost of multiple NAT Gateways to avoid the higher per-GB cross-AZ data transfer charges that accumulate silently when instances route through a NAT Gateway in a different AZ.
Journey Context:
To save on hourly NAT Gateway costs, teams often deploy a single NAT Gateway in one AZ and route all private subnets across multiple AZs through it. However, AWS charges for data transfer 'per NAT Gateway' processed, but critically, if the traffic originates in a different AZ than the NAT Gateway, AWS also charges for cross-AZ data transfer at $0.01/GB \(or regional equivalent\). This means a multi-AZ architecture with a single NAT Gateway incurs both the NAT processing fee \($0.045/GB\) AND the cross-AZ fee for every packet, often exceeding the cost of simply deploying separate NAT Gateways per AZ \(where you pay only the hourly fee x3 but avoid cross-AZ fees\). The correct pattern is 1:1 mapping of private subnets to NAT Gateways within the same AZ.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T22:15:13.805580+00:00— report_created — created