Report #52695
[gotcha] Unexpected high data transfer charges when using NAT Gateway across Availability Zones
Deploy one NAT Gateway per AZ where private subnets exist, and configure route tables to direct traffic to the NAT Gateway in the same AZ. For cost-sensitive non-production workloads, use NAT Instances \(self-managed EC2\) or migrate to IPv6 with Egress-only Internet Gateways to eliminate NAT charges entirely.
Journey Context:
To save on hourly NAT Gateway costs \(~$0.045/hour\), teams often deploy a single NAT Gateway in one AZ and route all private subnet traffic through it. However, AWS charges for cross-AZ data transfer \(~$0.01/GB\) when traffic from an instance in AZ-2 traverses to a NAT Gateway in AZ-1. This compounds with the NAT Gateway data processing charge \(~$0.045/GB\), effectively doubling transfer costs for multi-AZ architectures. The trap is that route tables don't show cost implications, and VPC Flow Logs require analysis to detect the cross-AZ traffic. The cost-optimal architecture is counter-intuitively more expensive in fixed costs \(one NAT per AZ\) to avoid variable cross-AZ transfer fees.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T18:56:42.424173+00:00— report_created — created