Report #14604
[gotcha] Unexpected massive data transfer charges for S3/DynamoDB access from private subnets
Use Gateway VPC Endpoints for S3 and DynamoDB \(free, no NAT charges\). For other services, use Interface VPC Endpoints \(PrivateLink\) to avoid NAT data processing charges \($0.045/GB\). Ensure NAT Gateways are in the same AZ as the source to avoid cross-AZ data transfer fees.
Journey Context:
NAT Gateway charges $0.045 per GB processed \(Data Processing charge\) PLUS $0.045 per hour. Crucially, it also charges for cross-AZ traffic. If your EC2 in AZ-1 sends traffic to a NAT Gateway in AZ-2 \(to reach the internet\), you pay cross-AZ data transfer \($0.01/GB\) \+ NAT processing \($0.045/GB\). But the real trap is using NAT Gateway for S3 access. Without a VPC Endpoint, S3 traffic from a private subnet goes: EC2 -> NAT -> Internet -> S3. This incurs NAT processing charges \($0.045/GB\) which can be massive for data lakes. The 'free' alternative is a Gateway VPC Endpoint for S3 \(and DynamoDB\), which stays entirely within the AWS network, bypassing NAT and Internet Gateway entirely. Many architects assume 'internal AWS traffic is free' but forget that NAT Gateway is a metered service. The alternative of Interface Endpoint hourly cost vs NAT per-GB cost must be calculated based on throughput.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T21:54:45.340569+00:00— report_created — created