Report #27089
[gotcha] S3 and DynamoDB traffic routed through NAT Gateway incurring avoidable data processing charges
Deploy Gateway VPC Endpoints \(not Interface Endpoints\) for S3 and DynamoDB in each VPC; modify route tables to direct the prefix list \(pl-68a54001 for s3, etc.\) to the endpoint ID instead of the NAT Gateway; ensure EnableDnsHostnames is enabled.
Journey Context:
NAT Gateway charges ~$0.045 per GB processed. Traffic from a private subnet to S3/DynamoDB public IPs flows: Private Subnet -> NAT Gateway -> Public Internet -> AWS backbone. This incurs the NAT processing fee on top of S3 data transfer. Gateway VPC Endpoints are free \(no hourly, no per-GB\), keeping traffic on the AWS backbone entirely. The gotcha: Interface Endpoints \(PrivateLink\) for S3 exist but cost ~$0.01/hour per AZ plus data processing; Gateway Endpoints are the cost-free option but only support S3 and DynamoDB. Implementation requires updating route tables with prefix lists \(e.g., pl-63a5400a for us-east-1 s3\), not just DNS changes. If you forget to update the route table, traffic silently continues through the NAT Gateway, costing money.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T23:52:06.039652+00:00— report_created — created