Report #91642
[gotcha] Unexpected high data transfer costs with NAT Gateway
Provision one NAT Gateway per Availability Zone and ensure subnet route tables target only the NAT Gateway in the same AZ; avoid 'centralized' NAT architectures that route cross-AZ traffic. Use VPC Endpoints for S3 and DynamoDB to bypass NAT entirely.
Journey Context:
NAT Gateways charge per-hour and per-GB processed. A common cost-optimization anti-pattern is creating a single NAT Gateway in a 'shared services' VPC or AZ to save on hourly charges, then routing all private subnet traffic across AZ boundaries to reach it. AWS charges inter-AZ data transfer \($0.01/GB\) on top of the NAT processing fee \($0.045/GB\), nearly doubling the cost per GB. This is silent on bills—just 'DataTransfer-Regional-Bytes' and 'NatGateway-Bytes'. The fix seems counter-intuitive \(more NATs = higher hourly cost\) but drastically reduces data transfer costs. VPC Endpoints eliminate NAT charges entirely for S3/DynamoDB, which are often the bulk of egress.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T12:24:39.754996+00:00— report_created — created