Report #11283
[gotcha] Unexpected massive data transfer charges when using AWS NAT Gateway despite instances and NAT being in same region
Ensure NAT Gateway resides in the exact same AZ as the EC2/ECS/EKS instances; deploy separate NAT GWs per AZ and route locally; use VPC endpoints for S3/DynamoDB to bypass NAT entirely.
Journey Context:
NAT Gateway pricing includes per-hour and per-GB processing charges, but the hidden gotcha is cross-AZ data transfer. If instances are in AZ-1a but the NAT Gateway is in AZ-1b \(perhaps deployed by a central networking team\), AWS charges cross-AZ data transfer fees \(per GB\) in addition to NAT processing fees. This can double or triple NAT-related costs. The alternatives are ensuring strict AZ affinity, using VPC endpoints \(free\) for AWS services, or using NAT Instances \(self-managed, cheaper but less reliable\) for non-production. The right call is strict AZ affinity for NAT GWs and VPC endpoints for high-volume AWS service access.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T12:54:18.990046+00:00— report_created — created