You’re probably familiar with finding surprise, hidden charges if you’ve been using the cloud for a while. Data transfer fees are the most common source of unanticipated charges on Amazon Web Services (AWS). They can be so costly that some companies, like Netflix and Pinterest, have spent fortunes on data transfer fees — up to $30 million a year.
In this post, we’ll share tips for navigating AWS data transfer costs and how you can optimize them.
What Are AWS Data Transfer Costs?
AWS charges for transferring data between its platform and the internet, as well as between its services such as Amazon EC2 and S3.
AWS services sometimes include the cost of moving data rather than charging a separate fee. Because of this, sometimes there is no distinct data transfer cost, such as when using Kinesis on AWS.
In other situations, there may be a charge for moving data one way but not the other, such as with AWS S3 data transfers across regions. Other situations incur different costs for transferring data in or out, such as between EC2 instances in different availability zones.
These are quite some variables. And so to control data costs, you need to understand how your data moves around and the charges it incurs.
AWS Data Transfer Pricing: How Does Billing Work?
Billing for AWS data transfers depends on several factors, including the type of data transfer involved, the AWS Region, and the specific AWS services involved.
AWS data transfer charges are also known as bandwidth charges or data egress fees. Identifying what counts as a data transfer on AWS is also crucial to understanding how data transfer billing works.
AWS Data transfer types: What counts as a data transfer on AWS?
The following are considered data transfers on the AWS cloud:
- Data transfer Into AWS (DTI): Importing or uploading data into an AWS service for the first time (not write operations that update existing data), such as into an Amazon S3 bucket or Amazon RDS database. This is also known as data ingress.
- Data transfer out of AWS to the Internet (DTO): Also known as data egress, this involves outbound data from an AWS service to the Internet. Downloading data or moving it into a third-party processing service are two examples of DTO.
- Data transfer within AWS: This involves transferring data from one AWS service (where your workload is) to a different AWS service, within the same AWS Region or Availability Zone or across Regions or Availability Zones.
- Data transfer between on-premises and AWS: This option involves moving data from an on-premises data center into or out of AWS. There are two options in this case; AWS Site-to-Site VPN or AWS Direct Connect.
Here’s a quick breakdown of how each AWS data transfer type is billed, so you can tell exactly what you are paying for.
Billing for data transfers into AWS (DTO)
DTOs are free. AWS does not charge for inbound data transfer (data incoming from the Internet) across all its services and Regions. For example, there will be no charge for uploading data into an S3 bucket, EC2 instance, or DynamoDB database.
Billing for data transfer out of AWS to the Internet (DTO)
AWS charges a fee for transferring data from an AWS service to the Internet. The provider refers to this as outbound data charges. AWS charges as low as $0.09 per GB for data transfers out for most US Regions, $0.12 in the Asia Pacific Region, and as high as $0.154 per GB in Cape Town (South Africa).
The DTO transfer can include downloading objects from an S3 bucket, moving data to a third-party processing service, or pushing it to another cloud provider’s storage.
However, DTO offers free data transfers from AWS to the Internet for the first 100 GB per month. So, the $0.09 per GB rate kicks in when you blow past the free tier of 100 GB but are within 10 TB.
Pricing for data transfer out of Amazon EC2
For transfers up to 40 TB per month, the rate drops to $0.085. The next 100 TB per month cost $0.07 per GB while transfers up to 150 TB are $0.05 per GB. Customers who forecast they’ll need to transfer more than 500 TB of data in a single month are encouraged to contact AWS directly for custom pricing.
Billing for data transfers within AWS
Data transfer within AWS can occur among different components of your workload or from your workload to another AWS service.
But, that’s not all.
- Data transfers from one AWS service to Amazon CloudFront are usually free.
- Data transfers you make within the same Availability Zone (AZ) are free as well.
- There may ($0.01 per GB) or may not be a fee associated with data transfers out across Availability Zones but within the same AWS Region. For example, data transfers to and from Amazon EC2 instances and Amazon S3, DynamoDB, SNS, Kinesis, and EBS do not incur charges.
- For data transfers across AWS Regions (cross-region data transfers), pricing starts at $0.01 per GB or $0.02 per GB, depending on what Regions are involved. For example, a data transfer out from Amazon EC2 in the US East (Ohio) Region to US East (North Virginia) Region costs $0.01 per GB, Meanwhile, transfers to US West (N. California), Europe (Vodafone) London, or Asia Pacific (Mumbai) are $0.02 per GB.
Here’s one more billing option you’ll want to know.
Billing for data transfers between on-premises data centers and AWS
Charges apply based on the type of data transfer you choose PLUS the standard data out (egress) fees applicable; Site-to-Site VPN or Direct Connect.
- Site-to-Site VPN: This is a managed service that securely connects your data center and AWS VPCs or AWS Transit Gateway to transfer data.
Pricing is based on the amount of time you use (connection time) and the volume of data you transfer (per GB).
The connection time applies as long as a VPN connection is available and provisioned. Billing is per hour. A connection-hour is charged at $0.05, and a partial hour is billed as a full hour.
On top of that $0.05 per hour rate, you’ll pay data egress (DTO) charges as long as you transfer more than 100 GB per month.
Here’s an example. Say you create a Site-to-Site VPN connection to an Amazon VPC in the US East (N. Virginia) region. You keep the connection going for 7 days, 12 hours daily. During that time, you transfer 1,000 GB in and 400 GB out.
The connection fee will be: $0.05 per GB in US East (N. Virginia) X 12 hours X 7 days = $4.2
The data transfer out (DTO) fee will be: 400 GB – 100 GB free tier = 300 GB X $0.09 per GB for the up to 10 TB tier = $27
The data transfer in (DTI) fee will be: $0
Total charges will be: $4.7 + $27 = $31.7 for this AWS Site-to-Site VPN data transfer.
- AWS Direct Connect: This option lets you create a dedicated connection to AWS. You can either connect using your own direct connection from AWS or a hosted connection by one of the AWS Direct Connect Delivery Partners worldwide. This option only transfers your data to a Direct Connect location — not out into the Internet.
Billing for AWS Direct Connect data transfers is based on:
- Capacity (in Mbps or Gbps)
- Port hours (duration that a port is provisioned for your use): This
- Data transfer out
It costs $0.30 per hour for 1Gbps, $2.25 per hour for 10Gbps, and $22.50 per hour for 100Gbps for a dedicated connection. A hosted connection starts at $0.03 per hour for 5Mbps, all the way to $2.48 per hour for 10 Gbps.
Data transfer out charges start at $0.02 per GB, which is region-dependent. To get the most up-to-date prices, you’ll want to check the AWS Direct Connect pricing page here.
This is an overview of pricing for AWS data transfer pricing. AWS includes a “Data Transfer” section with each of its service’s pricing pages. You can check out each of these pages to get specific rates for your exact needs.
Here are examples from the most common AWS services:
- Amazon EC2 data transfer pricing page.
Better yet, check out our no-BS guide to understanding Amazon EC2 pricing here.
- Amazon S3 data transfer pricing page.
Find out more in our own Amazon S3 pricing guide here.
- Amazon DynamoDB data transfer pricing page
- Amazon Redshift data transfer pricing page. Read our in-depth guide to Redshift pricing here.
- Amazon RDS data transfer pricing page. We’ve broken down and explained RDS pricing in more detail, too.
Once you have a good idea of what goes into calculating that AWS data transfer bill, you can take the next step; cut unnecessary costs and optimize your necessary spend.
AWS Data Transfer Pricing Cost-Saving Tips
Maybe you have wondered the same thing as the person in this Reddit thread.
Yes, AWS data transfer fees can really add up. And on that note, here are some guidelines to help you understand, control, and optimize your AWS data transfer costs.
1. Limit outbound data transfer where possible
The simplest way to reduce AWS data transfer costs is to look for means by which your application can cut the fat regarding sending outbound data. AWS egress pricing is where most data transfer costs really pile up.
As you can see from the below AWS Data Transfer Pricing Chart for the US West (Oregon) region, inbound data is not taxed, whereas outbound is (on a sliding scale).
Of course, for some applications restricting outbound data is not possible. If you’re serving any sort of media content over the internet, particularly images and videos, you will quickly rack up outbound data transfer fees. And while you’ll notice that the price per GB decreases as you transfer more outbound data, this isn’t much of a comfort when you consider it in terms of total spend.
Suppose for the sake of an example that your application is serving 150 TB of data per month — something not out of the realm of possibility for large-scale enterprise applications. Even using the cheapest rate of $0.05/GB you’re looking at 150TB = 150,000GB *$.05/GB = $7500/month in AWS data transfer costs alone!
(AWS Data Transfer Cost Breakdown – Representative Example)
2. Add “cost allocation tags” to your instances and load balancers
The first step in AWS cost reduction is obtaining insight into where your application is incurring the highest usage fees. To assist in this process, AWS provides a handy feature called cost allocation tags which can be used in conjunction with the AWS Cost Explorer to analyze which instances/services data transfer fees are stemming from.
Cost Explorer will identify the EC2 and other transfer costs driving your bill higher.
By applying these tags to your instances and load balancers, you can narrow in on which ones are generating the highest AWS data transfer costs and further filter these by type: CloudFront (out), Inter AZ, Internet (In), Internet (Out), Region to Region (In), and Region to Region (Out).
(Applying Cost Allocation Tag Filters)
3. Use Amazon CloudFront
Once you’ve used a tool like the AWS Cost Explorer to identify pain points, you can look to ease these by using an additional AWS service like CloudFront.
CloudFront is designed specifically to reduce charges arising from EC2 to public internet transfer such as one might incur from hosting a website that serves content to the public.
By caching your content in CloudFront, you can greatly reduce the charges incurred. CloudFront offers a free tier that entitles customers to 50 GB outbound data transfer and 2 million HTTP requests per month for the first 12 months.
Beyond that, CloudFront data transfer is charged according to the following table.
4. Keep data transfer within a single region
When transferring data between AWS services such as EC2 and S3, architect your application to ensure that these transfers are happening within a single AWS region.
Beyond this, ensure that you’re transferring data via private IPs, not public or elastic IPv4/IPv6 addresses. Assuming you adhere to these caveats, your data transfer cost will be $0.
5. Keep EC2 data transfer within a single availability zone
When transferring data, notably between EC2 instances but also RDS, Redshift, and other service instances, you will be charged $0.01/GB in each direction unless you keep the data transfer within the same availability zone.
The advice to transfer data using private IP addresses from the previous section still applies. To incur the lowest possible costs, combine solutions four and five, and keep data transfer confined to a single availability zone within a single region.
6. Use the cheapest available AWS regions that make business sense
Data transfer costs can vary widely due to AWS region pricing. AWS data transfer costs for certain regions are cheaper than others. Regions within the United States and Canada are normally the most inexpensive, whereas Singapore, India, and South America are among the most costly.
Unless there is a compelling business reason to host your services in these countries, opt for the more cost effective North American regions.
7. Use a third-party monitoring service to help you identify your data transfer pain points
By using a third-party AWS cost monitoring service such as CloudZero, you can be alerted to unforeseen and unexpected data transfer charges as they arise. Using proprietary machine learning algorithms, CloudZero will identify which services are causing you to incur high data transfer costs and suggest fixes you can make to reduce your overall spend.
Need Help Managing AWS Data Transfer Costs?
Here’s the thing. Cost management tools generally only show average and total costs – not specific data transfer costs.
This often makes it hard to identify who, what, and why your data transfer costs are changing. In turn, trimming unnecessary data transfer costs becomes a challenge. If this is a problem you’d like to fix, CloudZero can help.
With CloudZero, you can:
- Track cloud migration costs from the start to prevent surprises.
- Map your data transfer costs to the specific services, environments, teams, and products that generated them. Then you can tell exactly where to reduce unnecessary expenses.
- View your data transfer costs alongside other costs — broken down by immediately actionable, hourly insights, like Cost per Customer, per Team, per Feature, per Project, per Environment, and more.
- Allocate 100% of your AWS costs no matter how complex your environment is.
- Receive timely, noise-free, and contextual cost anomaly alerts right in your inbox so you can fix issues at the root cause.
We mean it. CloudZero helped LawnStarter save 50% on cloud storage. And NinjaCat cut its cloud costs by 40%. It doesn’t stop there. The average CloudZero customer hits 33% efficiency on average in their first year with help from our Certified FinOps Practitioners. Want similar results or better? to experience Cloudzero in action firsthand.
Frequently Asked Questions About AWS Data Transfer Costs
What is data transfer cost in AWS billing?
This refers to the fees AWS charges for data transfers from AWS to the Internet. There is no charge for transferring data into AWS, such as uploads or imports.
How much does it cost to transfer data out of AWS?
AWS charges for data transfers out of AWS vary depending on the service and the region. For example, after the first 100GB of free storage per month, data transfer out of Amazon EC2 instances to a third-party service starts at $0.09 per GB.
How much does it cost to transfer data from EC2 to S3?
The cost can vary based on the total number of files, the average file size, and the regions involved. For example, transferring 1 TB of S3 files from the US West (Oregon) Region to Asia Pacific (Beijing) Region would involve factors such as Amazon EC2 instance hours, GET and PUT requests, DynamoDB write requests, SQS requests, and Data Transfer Out charges. Additionally, the cost of transferring data between an Amazon EC2 instance and an Amazon S3 bucket in the same region is typically $0.09 per GB.
Which types of data transfer are free for Amazon S3?
Data transfers into AWS (ingress), data transfers out of AWS to Amazon CloudFront, and data transfers you make within the same Availability Zone (AZ) are free.
How much does AWS egress cost per GB?
The standard rate starts at $0.09 per GB for data transfer out of AWS to the Internet.