Home › Decoder › Reduce AWS NAT Gateway cost: six checks, in order
Reduce AWS NAT Gateway cost: six checks, in order
A NAT gateway has two meters: $0.045 per hour it exists (about $32.85 a month) and $0.045 per GB it processes. For most small teams the per-GB meter is the big one, and a large share of that traffic is often to S3 or DynamoDB, where a gateway endpoint has no additional charge. Work down this list; each step says how to prove the cause before you change anything.
US East (N. Virginia) prices checked 2026-11-04 against AWS's price list and pricing pages; other regions differ.
The checks, in order
Traffic to S3 and DynamoDB through the NAT
$0.045 per GB; a gateway endpoint adds no charge. Check NatGateway-Bytes in Cost Explorer, then VPC Flow Logs (or CloudWatch Contributor Insights on them) on the NAT interface for a day to see the top destinations. Many to S3 prefix ranges means an endpoint will help.
Decoder: NatGateway-Bytes: the NAT Gateway data-processing line
Too many gateways
$32.85 per gateway per month fixed. VPC console > NAT gateways: one per AZ per VPC; dev and staging VPCs rarely need the same high-availability layout as production. Check that every gateway is a route target.
Decoder: NatGateway-Hours: the fixed monthly cost of each NAT gateway
Cross-AZ hops on top of NAT bytes
$0.01 per GB each direction between AZs. If private subnets in AZ b and c route to a NAT in AZ a, their bytes pay regional transfer as well as NAT processing. Check DataTransfer-Regional-Bytes next to NatGateway-Bytes.
Decoder: DataTransfer-Regional-Bytes: cross-AZ traffic on your bill
Image pulls and package installs
$0.045 per GB for every pull. Compare NatGateway-Bytes spikes with deploy and autoscale times. ECR pulls from private subnets can use an ECR endpoint; check the endpoint price below first.
Logs and metrics sent to a vendor
$0.045 per GB through the NAT, plus whatever the vendor charges. Flow-log top destinations show the vendor's address ranges. Check agent sampling and filtering settings before assuming the volume is needed.
Decoder: NatGateway-Bytes: the NAT Gateway data-processing line
Interface endpoints for AWS APIs
$0.01 per AZ-hour plus $0.01 per GB. Only worthwhile when bytes to a given AWS service are large: 24 endpoint interfaces cost $175.20 a month before any data. Compare with the bytes you would move off the NAT at $0.045 per GB.
Checklist
- Cost Explorer: Usage type NatGateway-Bytes and NatGateway-Hours, daily, last 60 days.
- Per gateway, CloudWatch BytesOutToDestination and BytesOutToSource show which gateway carries the bytes.
- Flow logs for one day on the busiest gateway (they cost money themselves: keep the window short).
- Create the S3 gateway endpoint on one non-production route table first; confirm the route appears and the line falls.
- Roll the endpoint out to the other private route tables.
- Only then look at consolidating gateways or adding interface endpoints.
See your NAT lines with the dollars attached
Upload a Cost Explorer or CUR CSV. Billtrim reads it in your browser, finds the NAT and transfer lines and shows what each change is worth for your numbers.
Paste your export: how to export a Cost Explorer CSV or CUR file in two minutes.
Questions people ask
Can I just remove the NAT gateway?
Only if nothing in private subnets needs to reach the internet. Check routes and workloads first; consider whether public subnets or an egress-only design fit your security needs.
Is a NAT instance cheaper than a NAT gateway?
It avoids the per-GB processing charge but you run and patch it and pay for the instance and normal data transfer. Compare with your own traffic and who maintains it.
Does a gateway endpoint cost anything?
AWS documents no additional charge for S3 and DynamoDB gateway endpoints.
Related
- NatGateway-Bytes: the NAT Gateway data-processing line
- NatGateway-Hours: the fixed monthly cost of each NAT gateway
- VpcEndpoint-Hours: what interface endpoints cost
- DataTransfer-Regional-Bytes: cross-AZ traffic on your bill
- Why is my AWS bill so high? Check these 8 line items first
- AWS bill suddenly increased: find what changed