Report #8034
[gotcha] AWS NAT Gateway charges data processing fees plus cross-AZ data transfer costs even when traffic stays within the same VPC
Deploy one NAT Gateway per Availability Zone \(AZ\) to ensure traffic exits through the NAT in the same AZ as the source instance, avoiding cross-AZ data transfer charges; alternatively, replace NAT Gateways with VPC Endpoints \(PrivateLink\) for S3 and DynamoDB traffic to bypass NAT charges entirely, or use NAT instances for predictable high-volume workloads.
Journey Context:
NAT Gateway pricing includes an hourly charge and a 'data processing' charge per GB processed. Critically, if a subnet routes through a NAT Gateway in a different AZ \(common in cost-saving single-NAT setups\), AWS charges cross-AZ data transfer rates \(typically $0.01/GB\) on top of the processing fee. This creates bill shock for high-throughput systems. The robust pattern is 'one NAT per AZ' with route tables explicitly mapping each subnet to its local NAT. For S3/DynamoDB, Gateway VPC Endpoints are free \(no data processing charge\) and bypass NAT entirely. NAT instances \(EC2\) have lower per-GB costs but sacrifice availability and scaling.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T04:21:34.025179+00:00— report_created — created