AWS data transfer and egress charges are the fees you pay to move data between AWS and the internet, between regions, and in many cases between availability zones inside one region. They are the hidden line item because no single resource owns them: they accrue from traffic patterns spread across your whole architecture, and aggregate dashboards roll them into vague buckets. Data transferred out to the internet is charged per GB on a tiered scale, cross-region traffic is charged on both sides of some paths, and inter-AZ traffic is charged in each direction. Left unexamined, these can reach double-digit percentages of a bill.
This explainer sits under our complete guide to AWS cost optimization, the pillar for this cluster, and supports both the See and Cut steps of our See, Cut, Lock, Run method: you have to make the traffic visible before you can re-route it. Two of the biggest contributors get their own deep dives in how to reduce NAT gateway costs and reducing inter-region and inter-AZ traffic costs.
Data transfer has no instance ID and no bucket name, so it does not show up where teams look for cost. It appears only when you break the bill down by usage type in the Cost and Usage Report, which is why most teams underestimate it until they query the raw data.
The four places egress comes from
Internet egress is the most familiar: data sent from AWS out to users or other networks is billed per GB, on a tiered scale that decreases at volume, with a modest free allowance each month. Inter-region transfer applies when data moves between AWS regions, for example replication or a service in one region calling a database in another. Inter-availability-zone transfer is the one teams forget: traffic between AZs within a single region is charged in each direction, so a chatty service spread across three AZs pays for cross-AZ hops it may not need. The fourth source is service-mediated transfer, where a NAT gateway, load balancer, VPC endpoint, or Transfer Acceleration adds its own per-GB processing charge on top of the underlying movement.
How to find your real transfer cost
You cannot cut what you cannot see, so start in the data. Query the Cost and Usage Report grouped by usage type and operation to separate internet egress, inter-region, inter-AZ, and NAT processing into distinct numbers. This almost always reveals a surprise: a single replication path, a logging pipeline shipping data cross-region, or a microservice mesh generating heavy inter-AZ chatter. Once each source has a dollar figure, you can decide which is worth re-architecting and which is noise.
Want your transfer charges traced and cut?
Our AWS cost audit decomposes every data transfer line by source, identifies the traffic worth re-routing, and quantifies the saving before you change anything. On the performance model you pay only from realized savings. No savings, no fee.
Book an AWS cost audit →The moves that cut it
Most transfer savings come from a handful of architecture changes. Keep chatty components in the same availability zone where resilience allows, to avoid paying for cross-AZ hops on every call. Put a CloudFront distribution in front of internet-facing content so cached responses are served at CDN rates rather than raw egress, and so repeat requests never re-leave the origin. Use VPC gateway endpoints for S3 and DynamoDB so that traffic to those services does not route through a NAT gateway and incur its processing fee. Co-locate services with the data they read most so heavy traffic stays in-region and in-AZ. Each move targets one of the four sources above, which is why decomposing the bill first is essential.
| Transfer type | Where it occurs | Lever |
|---|---|---|
| Internet egress | AWS out to the internet | CloudFront caching, compression |
| Inter-region | Region to region | Reduce replication, batch transfers |
| Inter-AZ | AZ to AZ in one region | Co-locate chatty components |
| NAT processing | Private subnets to internet | VPC endpoints for S3/DynamoDB |
Data transfer pricing tiers, free allowances and service behaviors reflect AWS as of May 2026. Verify current per-GB rates and free-tier limits on the AWS pricing pages before modeling savings, as these change and vary by region.
The AWS Cost Optimization Field Guide includes the usage-type queries we run to decompose data transfer by source and the endpoint and CDN checklist we apply. It is the downloadable companion to this article.
The short version
AWS data transfer and egress charges hide because no resource owns them, but they decompose cleanly into internet egress, inter-region, inter-AZ, and service-mediated processing once you query the Cost and Usage Report by usage type. Give each source a dollar figure, then apply the matching lever: CloudFront for egress, co-location for inter-AZ, VPC endpoints to bypass NAT, and reduced cross-region replication. Tracing and cutting this line is a routine part of an AWS cost optimization engagement, as in our SaaS on AWS case study.