Report #17821
[gotcha] Unexpected $10k\+ AWS bill despite low data egress to internet due to NAT Gateway data processing charges
Eliminate cross-AZ traffic flowing through NAT Gateway by using VPC Gateway Endpoints \(S3/DynamoDB\), Interface VPC Endpoints for other AWS services, and EC2 Transit Gateway for inter-VPC; ensure instances use endpoints rather than NAT for all AWS service traffic
Journey Context:
NAT Gateway charges $0.045 per GB processed \(both ingress and egress through the gateway\) plus hourly fees. Crucially, traffic from a private subnet instance to an S3 bucket in the same region traverses the NAT Gateway if no VPC Endpoint exists, incurring the $0.045/GB charge despite never touching the public internet. Similarly, cross-AZ traffic routed through a NAT Gateway \(e.g., via Transit Gateway or peering\) incurs charges. The common error is assuming NAT Gateway only charges for internet-bound traffic. The fix involves heavy use of Gateway VPC Endpoints \(free, but only for S3/DynamoDB\) and Interface VPC Endpoints \(charged per hour/GB but cheaper than NAT for high-volume AWS service access\), plus architectural changes to keep traffic off NAT.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T06:25:35.140351+00:00— report_created — created