Report #12573
[gotcha] AWS NAT Gateway cross-AZ data processing charges despite same region traffic
Deploy NAT Gateways in every Availability Zone where you have subnets requiring outbound internet access. Force traffic to stay intra-AZ by using AZ-specific routing tables pointing to the local NAT Gateway. For S3/DynamoDB traffic, use VPC Gateway Endpoints to bypass NAT Gateways entirely.
Journey Context:
NAT Gateway pricing has two components: hourly charge per NAT Gateway, and data processing charge per GB processed \(not just data transfer out\). If an EC2 instance in AZ-1 sends traffic to a NAT Gateway in AZ-2 \(e.g., because you only deployed one NAT GW to 'save money'\), AWS charges the data processing fee \($0.045/GB\) AND cross-AZ data transfer fees. This makes a single NAT Gateway design often more expensive than multiple. Additionally, traffic to S3 via NAT Gateway incurs these charges unnecessarily. Alternatives: using NAT Instances \(cheaper but self-managed, no HA\), or PrivateLink. The accepted architecture is 'one NAT Gateway per AZ' with proper route tables.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T16:19:39.285153+00:00— report_created — created