AWS bill line item
NatGateway-Bytes
A per-gigabyte charge for every byte that passes through your NAT gateway. It adds to the flat hourly uptime charge. It also adds to any standard data-transfer charge that the traffic would incur anyway.
NAT gateway data processing
Verified against official AWS documentation last checked
Why it shows up
NAT gateways are the default egress path for private-subnet resources. Anything a private instance, task, or function sends over the internet is metered here. Examples are container image pulls, third-party API calls, and OS or package updates. The engineer who wrote the code often cannot see this.
The classic spike is container image pulls. Registry layers, base OS images, and CI/CD artifact downloads that route through NAT can dwarf actual application traffic. This is most common in clusters with frequent deploys or aggressive auto-scaling.
How to cut it
- Add VPC gateway endpoints for S3 and DynamoDB (no hourly or per-GB charge). Add interface endpoints for other AWS services. Then that traffic never touches the NAT gateway.
- Cache container base images and dependencies in-region rather than re-pulling from the internet on every deploy or scale event.
- Run one NAT gateway per AZ (not one shared gateway) to avoid stacking cross-AZ charges on top of NAT processing charges.
- For high-volume, latency-tolerant batch egress, evaluate whether a self-managed alternative is materially cheaper at your traffic volume.
$0.045 per GB processed. us-east-1; separate from the flat $0.045/hour NAT gateway uptime charge and from any standard data-transfer charge on the same bytes; as of 2026-07
How to read a usage type
NatGateway-Bytes carries no region or direction token, so there's nothing to break down here.
Source
Source: AWS docs →Found NatGateway-Bytes on your own bill?
Drop your Cost Explorer CSV into the AWS Bill Analyzer. It'll flag line items like this one on your own bill and link straight back to the fix.
Analyze your own bill →The meter you don't watch still grows.
Waste rarely hides in the service you check every week. CostMon watches every meter on your stack, including the ones you forgot were running.