Report #59332
[gotcha] Unexpected high data transfer charges when using AWS NAT Gateway with cross-AZ routing
Ensure each private subnet's route table targets a NAT Gateway in the same AZ. Never route traffic from one AZ through a NAT Gateway in a different AZ, or you will incur inter-AZ data transfer fees \($0.01/GB\) on top of NAT processing fees.
Journey Context:
NAT Gateways are AZ-specific resources. When a private subnet in AZ-1 routes through a NAT Gateway in AZ-2, AWS charges for data transfer between AZs \(cross-AZ traffic\) in addition to the standard NAT Gateway processing charges. This silently doubles or triples data costs for architectures that use a single NAT Gateway to save money \(instead of one per AZ\). The common mistake is creating one NAT Gateway in a 'shared' services AZ and pointing all private subnets' route tables \(0.0.0.0/0\) to it, thinking it only costs the hourly rate plus processing. The correct pattern is either one NAT Gateway per AZ \(resilient, expensive\) or a single AZ architecture \(single point of failure, cheap\). Never mix AZs in routing.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T06:05:03.475441+00:00— report_created — created