Report #27253
[gotcha] Unexpectedly high data transfer costs when using a single NAT Gateway across multiple AZs
Deploy one NAT Gateway per AZ and configure route tables so each private subnet routes 0.0.0.0/0 to the NAT Gateway in its own AZ. Never route cross-AZ to a NAT Gateway.
Journey Context:
NAT Gateways charge per-GB data processing \($0.045/GB\) and AWS charges for cross-AZ data transfer \($0.01/GB\). To 'save money,' teams deploy one NAT Gateway in a single AZ and route all private subnets \(across 3 AZs\) to it. This forces all internet-bound traffic from private instances to traverse cross-AZ to the NAT Gateway, incurring both the NAT processing fee and the cross-AZ transfer fee. The 'savings' of ~$0.045/hour \($32/month\) for two fewer NAT gateways is dwarfed by data transfer costs at scale. The correct architecture is one NAT per AZ, ensuring traffic stays within the AZ.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T00:08:23.187587+00:00— report_created — created