When using AWS for cloud computing, it’s important to consider all aspects of cost. One often-overlooked cause for a growing AWS bill is the cumulative cost of data transfers. This is a particularly challenging cost to approximate due to each service having different rates and stipulations. This article will guide you through the intricacies of AWS Data Transfers and highlight some cost-effective strategies for routing your data. 

What are AWS Data Transfers? 

An AWS Data Transfer occurs whenever data is moved either to the Internet from AWS or moved between AWS instances across their respective Regions or Availability Zones. Generally, inbound transfers are free; inter-Region and inter-Availablity Zone data transfers incur costs and are metered per Gigabyte. 

Cost Scenario

In 2016 it was estimated that the average business manages over 162.9TB of data. That number was doubled for enterprise businesses. An article written in 2019 ranked AWS data transfer spending by company for the years 2017-2018. They discovered that Apple had spent close to $50 million on data transfers in 2017. And for 7 of the top 10 biggest spenders on AWS Data transfers in 2017, costs rose by 50% in 2018. 

As you can see, depending on the kind of data (such as video content, or data replication) and usage patterns of your users, data transfer costs can jump significantly overnight. Planning out the most efficient flow of your data is critical to staying within budget. Fortunately, there are several ways to reduce this cost if you first understand how AWS data transfer pricing works.

AWS Data Transfer Pricing Categories

There are three common ways a business can incur data transfer costs. Let’s examine each of them in detail for some of the different services available.

 

Data Transfer In and Out of an AWS Region 

The following sections provide a quick breakdown of the cross-regional costs associated with data transfers for common Amazon services. 

Direct Connect Data Transfer Pricing

AWS Direct Connect enables businesses to establish a private dedicated network connection to their AWS resources. Below is a simplified table of Direct Connect pricing from Regions within the United States to other Regions in the United States or abroad.

USA
Canada
EU
Tokyo & Osaka
Seoul, Singapore, HK
Mumbai
Sao Paulo
Sydney
Bahrain
Cape Town
USA
$0.02
$0.02
$0.03
$0.09
$0.09
$0.09
$0.15
$0.13
$0.11

 

EC2 Data Transfer Pricing 

AWS EC2s provide resizable compute capacity in the cloud. Data transfer costs for EC2s do not vary based on whether the EC2 is a Spot, On-Demand, or Reserved instance.

Whenever you see the phrase “Standard Data Transfer rates” in AWS documentation for other services, they are referring to On-Demand EC2 data transfer pricing.

Data Transfer From EC2 to Internet 

OUT of EC2 to Internet
Pricing 
Up to 1 GB / Month
$0.00 per GB
Next 9.999 TB / Month
$0.108 per GB
Next 40 TB / Month
$0.102 per GB
Next 100 TB / Month
$0.084 per GB
Greater than 150 TB / Month
$0.06 per GB

 

Data Transfer From EC2 to Other Regions 

OUT of EC2 to
Pricing 
Amazon Cloudfront
$0.00 per GB
USA Regions (not Ohio)
$0.02 per GB
USA Ohio Region
$0.01 per GB
Non-US Regions
$0.02 per GB

 

ElastiCache Data Transfer Pricing

AWS ElastiCache enables your web apps to leverage in-memory datastore (cache) in the cloud for fast information retrieval. There are no Amazon ElastiCache data transfer charges for traffic in or out of an Amazon ElastiCache node itself; charges in this case only come from traffic in or out of a given EC2 instance associated with the ElastiCache node at the standard Regional rate of $0.01 per GB. 

RDS Data Transfer Pricing 

AWS RDS accelerates the setup and operation of cloud relationship databases. RDS data transfer pricing may vary per database used. Notice in the following table that there is a free pricing tier (up to 1GB/mo) for data transfers into Amazon RDS. Also, outbound transfers to Amazon Cloudfront are completely free

Data Transfer in to RDS

IN to Amazon RDS
Pricing 
Up to 1 GB / Month
$0.00 per GB
Next 9.999 TB / Month
$0.108 per GB
Next 40 TB / Month
$0.102 per GB
Next 100 TB / Month
$0.084 per GB
>150 TB / Month
$0.06 per GB

 

Data Transfer out of RDS

OUT of Amazon RDS
Pricing 
Amazon Cloudfront
$0.00 per GB
USA Region (not Ohio)
$0.02 per GB
USA Ohio Region
$0.01 per GB
Non-US Region
$0.02 per GB

 

Redshift Data Transfer Pricing 

Amazon Redshift is a data warehouse that enables businesses to analyze petabyte-sized data. Typically you can expect to pay standard data transfer rates when using Redshift. The only exception to this is when transferring data to or from an S3 resource within the same AWS region. If you are using a VPC, it’s important to note that data transfers over JDBC/ODBC to your Amazon Redshift cluster endpoint also incur standard data transfer fees (which are the same as EC2 data transfer rates). 

Data Transfers Within an AWS Region

Data transfers in or out of a given service within a specific AWS region is generally $0.01 per GB. However, data transfers within the same Availability Zone are free (except for VPC Peering Connections). 

Metered Data Transfers Within an AWS Region

Service In Same AWS Region
Pricing
Amazon EC2
$0.01 per GB
Amazon RDS
$0.01 per GB
Amazon Redshift
$0.01 per GB
Amazon DynamoDB Accelerator 
$0.01 per GB
Amazon ElastiCache
$0.01 per GB
Elastic Network Interfaces
$0.01 per GB
VPC Peering Connections
$0.01 per GB

Free Data Transfers Within an AWS Region

Service In Same AWS Region
Pricing
Amazon S3
Free
Amazon Glacier
Free
Amazon DynamoDB
Free
Amazon SES
Free
Amazon SQS
Free
Amazon Kinesis
Free
Amazon ECR
Free
Amazon SNS
Free
Amazon SimpleDB
Free

 

Data Transfer In and Out of an AWS Edge location

AWS Edge Locations are part of the CloudFront CDN service. Cloudfront enables quick delivery of media content, API actions, and other data at a preferred data transfer rate. As you can see in the following table, after the first 150TB worth of data transfers for US-based services, the cost drops by $0.02 per GB in comparison to standard data transfer rates and continues to drop by another $0.04 per GB.

A transfer of 100TB out of RDS or EC2 to the internet costs $7,979.11 while the same transfer using AWS CloudFront costs only $7.050.

You can achieve even better discounted data transfer rates by committing to 10TB+ of data transfers per month by contacting AWS and signing a private pricing agreement. 
Per Month
USA & CA
EU & Israel
South Africa, Kenya, & Middle East
South America
Japan
Australia
Singapore, South Korea, Taiwan, Hong Kong, & Philippines
India
First 10TB
$0.09
$0.09
$0.11
$0.11
$0.11
$0.11
$0.14
$0.17
Next 40TB
$0.08
$0.08
$0.11
$0.11
$0.09
$0.10
$0.14
$0.13
Next 100TB
$0.06
$0.06
$0.09
$0.09
$0.09
$0.09
$0.12
$0.11
Next 350TB
$0.04
$0.04
$0.08
$0.08
$0.08
$0.09
$0.10
$0.10
Next 524TB
$0.03
$0.03
$0.06
$0.06
$0.08
$0.09
$0.08
$0.10
Next 4PB
$0.03
$0.03
$0.05
$0.05
$0.07
$0.09
$0.07
$0.10
Over 5PB
$0.02
$0.02
$0.04
$0.04
$0.06
$0.08
$0.06
$0.10

 

The Need For Data Transfers Explained

Some businesses may try to reduce their data transfer costs by consolidating their applications into fewer regions and availability zones. However, there are many advantages to geographic diversification. 

Suppose that you are hosting a global application and have noticed a growing user base in Asia. To accelerate this growth and provide the best experience, you may need to host your application closer, perhaps in the AWS Singapore region (ap-southeast-1). This avoids long round-trip latency issues from data traveling between the US and Asia. 

It would make sense to host an instance of your application in a different AWS region in order to lower the round-trip latency from different parts of the world.

Another reason why you may have to use a specific region may be that you are serving the European market where corporations are required by law to store their sensitive data in data centers physically located within continental Europe. In this case, you may host an instance of your application in the region located in Frankfurt (eu-central-1)  simply to comply with local regulations.

Business continuity in the event of a natural disaster or outage is also a commonly cited reason for hosting servers across different Regions or Availability Zones.. This use case is further described in the next section.

How to Reduce AWS Data Transfer Costs 

We’ve covered basic pricing rates for data transfers across common AWS services and why a business must seriously consider multi-regional infrastructure. Now let’s look at how you can apply this information to reduce your own AWS bill.

Step 1: Understand Your Existing Data Transfer Spending

The first step towards understanding–and reducing–your AWS bill is to measure everything, discover your historical cost patterns, and visualize your spending trends. In the case of data transfer costs, you’ll have to dig deep into a subset of EC2 Service line-items to get the information you need.

To find how much you are spending on data transfers:

  1. Open the AWS Console.
  2. Navigate to the AWS Cost Explorer.
  3. Filter by the Service named “EC2 Other”.
  4. Group by “Usage Type”.

The AWS cost explorer console provides options to filter and group spending by tags and attributes.

You will then be presented with a number of sub-line items that include EBS Snapshots, EBS Volume usage, and also Data Transfer costs. As an example, the data transfer line item would be labeled by a code such as “USW2-DataTransfer-Regional-Bytes”. 

We recommend that you take one additional step of designating the Name tag as a Cost Allocation Tag so that you can further group your spending by individual EC2 instances or Elastic Load Balancers (ELB). AWS doesn’t index by default the data provided in Cost Explorer data by your AWS tags. You have to request your tags to be designated as a Cost Allocation Tag. Since the “Name” of an EC2 instance or an ELB is nothing more than a tag in AWS, you can request for the Name tag to be used for indexing. This indexing request would only apply to your data going forward from the time of your request and be applied retrospectively. 

Once you have isolated your data transfer costs, observe the trend over multiple months to see if you have experienced any sudden increases in recent history. You can then group by the Name tag to determine which instances  contributed to the increase in your data transfer costs.

You can also price hypothetical data transfer scenarios between specific regions using the AWS Calculator. Simply select Create Estimate and scroll to AWS Data Transfer.

The AWS Pricing Calculator offers a module intended for estimating data transfer costs.

Step 2: Architect Your Environment To Optimize Data Transfers

The following strategies should always be considered for your applications. Doing so ensures a proactive approach towards a healthy budget and acceptable AWS bill. 

Keep Your Data Within The Same Availability Zone

We have seen cases where employees who have direct access to the AWS console launch EC2s or other AWS services in different Availability Zones (AZs) without realizing that the transfer between those nodes result in a charge. So if you don’t have a reason such as ensuring disaster recovery for using different AZs, then make sure that your employees only launch new services in the same AZ. One way to ensure compliance would be to restrict their privileges with IAM role policies

Keep Your Data Within the Same Region 

There are times when you must keep data in two separate AZs out of precaution, so that if one AZ goes offline, another isolated building with a separate network and power ensures your business’s continuity. This said, you have the option to use two AZs that are in the same region. In terms of disaster recovery, if one AWS physical data center (AZ) is affected, then you have the protection of the second data center (or AZ) which would be located miles away. However, if you are trying to protect against a natural disaster such as an earthquake that may affect a whole region, then you would want to use two regions.

Use A Less Expensive Region

As means of context, as of the time of the writing of this article, the price of data transfer out of the Sao Paulo (Brazil) region to all other regions is $0.14 per Gigabyte, and transfers from the Singapore region to all other regions cost $0.09, whereas the transfer cost from the Ohio region to Atlanta isonly $0.01. So if you must use regions outside of the US, know that the international rates vary considerably. For illustration purposes, the table below shows pricing of data transfer out of a few sample regions to all other AWS regions.

OUT to all other regions
Pricing 
Africa (Cape Town)
$0.15 per GB
Brazil (Sao Paolo)
$0.14 per GB
Middle East (Bahrain)
$0.11 per GB
Asia (Singapore)
$0.09 per GB
Asia (Seoul)
$0.08 per GB
GovCloud (East)
$0.03 per GB
Europe (Frankfurt)
$0.02 per GB
UK (London)
$0.02 per GB
US (Ohio) to US (N. VA)
$0.01 per GB

 

Optimize Your Use of Public IP Addresses

There are rules that apply to data transfer pricing when using a public IP address or an Elastic  IPv4 or IPv6. The rules are best explained in the Data Transfer section of the AWS page dedicated to explaining EC2 pricing in small fonts. Data transferred “in” to and “out” from a public or Elastic IPv4 address is charged at $0.01/GB in each direction, while data transferred “in” to and “out” from an IPv6 address in a different VPC is charged at $0.01/GB in each direction. You can optimize your spending by using a Private IP address when transferring data that doesn’t leave your region or AZ.

Use AWS CloudFront 

Using a content delivery network (CDN) such as CloudFront is essential in keeping data transfer costs low. CloudFront moves your most accessed assets to the “front” of the AWS network (i.e., Edge Locations), ensuring fast delivery to your end users.  Data transfers into AWS CloudFront from other AWS resources are generally free; Data transfers from AWS CloudFront to the internet are 20-40% cheaper than standard data transfer rates–with the possibility of deeper discounts through a Private Pricing Program contract. 

Step 3: Sign up for the AWS Data Transfer Private Pricing Program 

You can reduce your data transfer costs by committing to an annual volume in advance. This volume strategy is  conceptually similar to Reserved Instances (RI) or Savings Plans, and it’s referred to as a Private Pricing Program.

For instance, let’s say that you have concluded that you need to consume 1 Petabyte’s worth of data transfer each month over the next 12 months. You are unable to  reduce that cost any further by optimizing or re-architecting. In that case, you would enter into a Private Pricing Program and commit to using a minimum of 1 Petabyte of data transfer monthly  across designated regions between AWS services such as EC2, RDS, Elasticache, or Redshift. 

If you do not use the data transfer amount that you have committed to, you are still obligated to pay for the full committed amount.

In exchange for the commitment, you will receive a significant discount which is negotiated between you and your AWS account manager and which must remain confidential. Since the private pricing agreements are negotiated and signed on a case by case basis, you won’t find any standard volume discount pricing schedules associated with the program. We recommend that you reach out to your AWS account manager to start the process.