Report #49423
[gotcha] Intra-AZ traffic through NAT Gateway incurs data processing charges despite no data transfer cost
Bypass NAT Gateway for all AWS service traffic by using VPC Gateway endpoints \(S3/DynamoDB\) or Interface endpoints \(PrivateLink\), and ensure routing to internal resources uses VPC peering or Transit Gateway instead of NAT to avoid the per-GB processing fee.
Journey Context:
Architects design VPCs with private subnets routing 0.0.0.0/0 to a NAT Gateway for internet access. They optimize costs by keeping traffic within the same AZ to avoid cross-AZ data transfer charges, assuming intra-AZ traffic to AWS services \(like S3\) via NAT is 'free' except for the NAT hourly charge. However, AWS NAT Gateway pricing explicitly charges a per-GB data processing fee \($0.045/GB in us-east-1\) for every gigabyte passing through the gateway, regardless of whether it stays in the AZ, goes to the internet, or hits an AWS service. This results in massive unexpected bills for high-throughput workloads. The only mitigation is to remove traffic from the NAT Gateway entirely by using VPC endpoints \(which have their own pricing model but are cheaper at scale\) or by using private connectivity options that avoid the NAT processing charge.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T13:26:24.090446+00:00— report_created — created