networkingcost-optimizationawsplaybook

Cutting the data transfer bill: a playbook for the invisible line

Data transfer is billed per GB with no resource to point at, which is why it is the hardest line to attribute and the easiest to ignore. Here is how to find the flows, rank them, and cut them, with the per GB rates that matter.

The C3X Team··8 min read

Quick answer

Rank the transfer flows by rate, then attack in that order. Internet egress is about $0.09 per GB on AWS beyond the first 100 GB, $0.087 on Azure, and $0.12 on GCP premium tier: fix with a CDN, compression, and caching. Cross region is $0.02 per GB: fix by co-locating. Cross availability zone is $0.01 per GB each direction and is the most commonly missed: fix with zone aware routing and replica placement. NAT gateway data processing is $0.045 per GB on top of $0.045 per hour: fix with VPC endpoints, which is often the single largest saving. Typical reduction is 40 to 70 percent of transfer spend.

Data transfer is the only major cost line with no resource behind it. You cannot right-size it, you cannot delete it, and the bill gives you a per GB total rather than telling you which service sent the bytes. That opacity is why it reaches 10 to 20 percent of a bill in data heavy architectures before anyone investigates.

The rate card that decides priority

FlowTypical rateMain fix
Internet egress (AWS)$0.09/GB after 100 GB freeCDN, compression, caching
Internet egress (GCP premium)~$0.12/GB first TBStandard tier or CDN
Internet egress (Azure)~$0.087/GB after 100 GBCDN, compression
NAT gateway processing$0.045/GB plus $0.045/hrVPC endpoints
Cross region~$0.02/GBCo-locate
Cross availability zone$0.01/GB each directionZone aware routing
Same AZ, private IPFreePrefer it

Step 1: find where the bytes go

Enable flow logs and query them by source, destination, and byte count. Group results into the categories above. Most teams find one or two flows account for the majority of transfer cost, and they are usually a surprise: a monitoring agent shipping full resolution metrics to a third party, a replication stream between zones, or a service calling an external API through a NAT gateway several million times a day.

Do this before optimising anything. Transfer optimisation done on intuition targets the visible flows, customer downloads, while the actual cost is often internal chatter nobody has thought about.

Step 2: kill NAT gateway processing with endpoints

This is usually the fastest large win. Any traffic from a private subnet to a cloud service (object storage, queues, container registries, secret stores) routes through the NAT gateway by default and pays $0.045 per GB in processing on top of the hourly charge. A private endpoint for that service removes the processing charge entirely for gateway style endpoints, or replaces it with a lower per GB rate for interface endpoints.

An application pulling 50 TB a month from object storage through a NAT gateway pays about $2,250 in processing. Add a gateway endpoint and that goes to zero. Container image pulls are the other classic: a large cluster pulling multi gigabyte images on every scale out event can generate terabytes monthly. Details in NAT gateway cost optimization.

Step 3: the cross zone traffic nobody accounts for

Cross availability zone transfer at $0.01 per GB in each direction sounds trivial and is not, because it applies to internal traffic at internal volumes. A chatty microservice mesh where every call has a two thirds chance of crossing a zone, a database replicating synchronously across zones, or a Kafka cluster with cross zone consumers can each generate tens of terabytes a month. 100 TB of cross zone traffic is $2,000 a month across both directions.

The fixes: topology aware routing so a service prefers endpoints in its own zone, rack awareness on distributed data systems so consumers read from local replicas, and consolidating chatty service pairs into the same zone. The trade off is explicit: zonal locality reduces transfer cost and reduces resilience to a zone failure, so this is a decision for architects, not a blanket policy.

Step 4: put a CDN in front of internet egress

At roughly $0.09 per GB on AWS, 100 TB of monthly internet egress is about $9,000. CDN delivery rates are typically lower per GB, and more importantly transfer from origin to the CDN is often discounted or free, so a cache hit ratio of 85 percent means only 15 TB leaves the origin. That combination commonly cuts egress spend 50 to 70 percent while also improving latency.

Two cheaper levers belong here too. Compression on text, JSON, and API responses typically reduces payload size 60 to 80 percent and is often a single configuration line. And pagination or field selection on chatty APIs reduces bytes at the source, which is always cheaper than moving them efficiently. The checklist is in the egress cost reduction checklist.

Step 5: check the architecture for avoidable crossings

Some transfer cost is structural. A service in one region reading from a database in another pays $0.02 per GB on every query. Logs shipped raw to a third party platform pay egress on every line. A backup replicated to a second region pays transfer on every byte. Each of these may be justified, but each should be a deliberate decision with a known monthly cost rather than an inherited default.

Expected outcome

A full pass typically cuts transfer spend 40 to 70 percent, and the savings persist because they are architectural rather than operational. On a bill where transfer is $30,000 a month, that is $12,000 to $21,000. The durable control is pricing network architecture before it ships: cross zone placement, NAT routing, and region choices are cheap to change in a Terraform review and expensive to change once traffic depends on them. Price them against the resource catalog and see data egress cost optimization for the deeper treatment.

FAQ

Why is data transfer so hard to control?

Because it is the only major cost line with no resource behind it. You cannot right-size it or delete it, and the bill gives a per GB total rather than identifying which service sent the bytes. That opacity is why transfer reaches 10 to 20 percent of a bill in data heavy architectures before anyone investigates. Flow logs are the only way to attribute it properly.

What is the fastest data transfer saving?

Adding private endpoints to remove NAT gateway data processing. Traffic from a private subnet to cloud services routes through the NAT gateway by default at $0.045 per GB on top of the hourly charge. An application pulling 50 TB a month from object storage pays about $2,250 in processing that a gateway endpoint removes entirely. Container image pulls are the other classic source.

How much does cross availability zone traffic cost?

$0.01 per GB in each direction, which sounds trivial but applies to internal traffic at internal volumes. A chatty service mesh, synchronous cross zone database replication, or a Kafka cluster with cross zone consumers can each generate tens of terabytes monthly. 100 TB of cross zone traffic is about $2,000 a month once both directions are counted.

Should I reduce cross zone traffic for cost?

It is a genuine trade off, not a free win. Topology aware routing, rack awareness on distributed data systems, and co-locating chatty service pairs all reduce cross zone charges, but they also reduce resilience to a zone failure. This is an architectural decision that belongs with the people who own availability targets, not a blanket cost policy applied across the estate.

How much does a CDN save on egress?

Commonly 50 to 70 percent. At roughly $0.09 per GB on AWS, 100 TB of monthly internet egress is about $9,000. CDN delivery rates are typically lower per GB, and origin to CDN transfer is often discounted or free, so an 85 percent cache hit ratio means only 15 TB leaves the origin. Latency improves at the same time, which makes it an easy case to argue.

What is the cheapest egress lever to implement?

Compression. Enabling it on text, JSON, and API responses typically reduces payload size 60 to 80 percent and is often a single configuration line at the load balancer or web server. Pagination and field selection on chatty APIs are similarly cheap and reduce bytes at the source, which always beats moving the same bytes more efficiently.

What to do next

Price the network architecture before traffic depends on it. C3X costs Terraform against a live resource catalog. Start with the quickstart.

Try C3X on your own Terraform

Free and open source. No API key required. One command to install, one command to estimate.