Report #6576
[gotcha] AWS NAT Gateway cross-AZ data transfer double billing
Provision one NAT Gateway per AZ and ensure EC2 instances use the NAT Gateway in their local AZ via route table configuration; never route cross-AZ to a NAT Gateway.
Journey Context:
Many teams deploy a single NAT Gateway in one AZ for cost savings, routing all private subnet traffic through it. However, AWS charges data transfer for cross-AZ traffic at $0.01/GB each direction, then charges again for NAT Gateway processing at $0.045/GB. For a 10GB transfer, this costs $0.55 instead of $0.045 if kept in-zone. The alternative of 'one NAT per AZ' increases fixed hourly costs \(~$0.045/hr each\) but eliminates variable cross-AZ data charges, which almost always wins at scale. The key is ensuring route tables for each AZ point to the local NAT Gateway ID, not the other AZ's gateway.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T00:22:24.208027+00:00— report_created — created