The Ultimate Guide to AWS Data Transfer Pricing
Unless you and your business have been operating under a rock, you’ve probably heard of cloud computing. As the industry’s largest cloud computing provider, Amazon Web Services (AWS) offers a plethora of services to help businesses store and analyze large datasets. To leverage the full power of AWS, you’ll be moving your data into and out of the platform very often. These sorts of data transfer costs can add up quickly, and can be difficult to track.
While AWS does a good job designing their services to be extremely scalable and cost-effective, it can be surprising just how much you can save by understanding data transfer costs alone! In this article, we’ll examine the three main types of AWS data transfer costs, and offer strategies for cost optimization. It doesn’t matter if you’re a solo developer with a passion project, or a large enterprise with millions in AWS spend per year–if you use AWS and like saving money, this is the guide for you.
What’s Considered an AWS Data Transfer?
An AWS data transfer is exactly what it sounds like: any movement of data into, out of, or within the AWS platform. Here are some common examples:
- When you upload an object to an Amazon S3 bucket, this is considered a transfer of data into AWS.
- Similarly, when you download an object from S3, this is considered a transfer of data out of AWS.
- When you retrieve data from S3 to an Amazon EC2 instance for processing, this is considered a transfer of data within AWS.
- AWS data transfers also include transfers between AWS and your on-premise data center, if you have one.
All AWS data transfers fall broadly into these four categories. It’s helpful to look at data transfer costs through a similar lens as well, which we’ll do in the next section.
Overview of AWS Data Transfer Costs
With how much data modern businesses need to handle and process, AWS data transfer costs can often be one of a business’s largest expenses. So, let’s now look at where these costs come from.
Data Transfer Costs Between AWS and the Internet
As a quick refresher, we identified four types of AWS data transfers. In this section, we’ll focus on data transfers costs into and out of AWS–more broadly, between AWS and the Internet.
Data Transfers Into AWS (DTI)
Let’s start with the good news: in general, data transfers into AWS are free! That’s right–it doesn’t matter if you have terabytes or even petabytes of data to transfer–AWS won’t charge you a penny for DTI.
It’s worth noting that data transfers into AWS refer to operations like uploading or importing data. This isn’t to be confused with write operations. For example, importing data into an AWS database service like DynamoDB or RDS does not incur charges. However, regular write operations, which create or update items inside the table, do incur charges.
Data Transfers Out of AWS (DTO)
Now, moving on to data transfers out of AWS–unfortunately, these are generally not free. Costs here depend on the service. For the most up to date pricing information, keep tabs on each AWS service’s pricing page. Each page usually has a dedicated section that outlines data transfer costs. For convenience, here are links to pricing pages for some of the most popular AWS services.
Amazon EC2 | EC2 Pricing page |
Amazon S3 | S3 Pricing page |
Amazon RDS | RDS Pricing page for MySQL (RDS pricing varies per database) |
Amazon DynamoDB | DDB Pricing page |
Amazon Redshift | Redshift Pricing page |
Amazon SQS | SQS Pricing page |
Amazon SNS | SNS Pricing page |
Understanding How AWS Charges Outbound Data Transfers – EC2 Example
AWS uses a similar pricing model for outbound data transfers across all their services, so let’s just take one popular service as an example. Take EC2:
Here, we’re looking at data transfer costs for EC2 in the US East (N. Virginia) region. These are the main takeaways:
- As always, DTI is free.
- For DTO, you get the first 100GB per month free. This is not limited to just EC2; the first 100GB transferred out from any service, across all Regions, is free. For example, suppose you transferred 50GB out of EC2 in US East (N. Virginia), then 50GB out of S3 in US West (Oregon). This uses up your free quota for the month, and the next byte of data you transfer will incur costs.
- After the first 100GB, cost rates start higher and then taper off as your usage increases. If you estimate that your usage will exceed 500TB per month, AWS requests that you contact their sales team.
Rates can vary by Region. Say that instead of US East (N. Virginia), we’re now operating in Asia Pacific (Tokyo):
So, this is the other main takeaway:
- DTO costs are Region-dependent. In general, costs in the main US regions (N. Virginia, Oregon) tend to be the lowest.
Data Transfer Costs Within AWS
If you’re operating within AWS, here are a couple general data transfer cost principles:
- Data transfers within the same Availability Zone (AZ) are free. So if you can, try to maximize the amount of data transfer within an AZ.
- Data transfers within the same Region, but across different AZs, may incur charges. Some of these transfers are free, and we’ll list different examples below. If you can’t keep your transfer within the same AZ, try to keep it within the same region.
- Data transfers across different Regions incur charges.
Same-Region, Same-AZ
The first point is pretty self-explanatory. If you can, maximizing the amount of data transfer you perform within the same AZ will surely help cut costs.
Same-Region, Cross-AZ
To illustrate the second point, let’s again use EC2 as an example. A common workflow is transferring data between another AWS service for processing in EC2. Data transfer charges between EC2 instances and the following services do not incur charges if they occur within the same Region:
- Amazon S3
- Amazon EBS direct APIs (unless FIPS endpoints are used)
- Amazon Glacier
- Amazon DynamoDB
- Amazon SES
- Amazon SQS
- Amazon Kinesis
- Amazon ECR
- Amazon SNS
- Amazon SimpleDB
However, in all other cases, AWS charges $0.01/GB for data transfers both in and out of EC2 instances (same Region, cross-AZ). For example, if you’re transferring data from RDS to EC2, then from EC2 to Redshift, you’ll be charged $0.01/GB for both of those operations.
Cross-Region
Cross-region data transfers almost always incur a charge. Here’s a truncated screenshot of the S3 pricing page for cross-region transfers out of US East (N. Virginia):
Unless you use Amazon CloudFront (which we’ll get into later), you’ll be charged per-GB. Each service has their own chart which you should reference before performing any large-scale cross-region data transfers. Also, read our blog posts that are related to EC2 here for a more in-depth information.
Data Transfer Costs Between AWS and On-Premises Data Centers
Transferring data between AWS and your on-premise data center is a unique case. In order to ensure that the data transfer is both secure and efficient, you should use one of two offerings: AWS Site-to-Site VPN and AWS Direct Connect.
AWS Site-to-Site VPN
The first option you have is AWS Site-to-Site VPN, a fully-managed service that creates a secure connection between your AWS VPCs and your data center. Site-to-Site VPN charges for open connection time, in addition to data transfer out bandwidth:
- Connection time: $0.05/connection-hour
- DTO: Region-dependent. Rates are explained in the EC2 pricing page.
For example, suppose you open an AWS Site-to-Site VPN connection in US East (N. Virginia). The connection is open for 10 days, 24 hours a day, and you transfer in 5,100 GB in and 5,100 GB out. Here’s a breakdown of your costs:
- Connection time: $0.05 * 10 days * 24 hours = $12.00
- DTI: $0. Free as always!
- DTO: First 100 GB free; remaining 5,000 GB charged at $0.09/GB = $450.00
- Total: $462.00
AWS Direct Connect
Secondly, you can use AWS Direct Connect, which charges based on a couple factors:
- Capacity: A 1 Gbps connection starts at $0.30/hour. Higher capacity connections cost more.
- Connection time: Dependent on capacity.
- DTO: Region-dependent. Prices start at $0.02/GB, which is much lower than if you used Site-to-Site VPN.
Let’s use the same example for Site-to-Site VPN and compare costs:
- Capacity: Suppose we don’t need particularly high throughput, so we choose the 1 Gbps connection. This costs $0.30/hour.
- Connection time: $0.30 * 10 days * 24 hours = $72.00
- DTI: $0. Free as always!
- DTO: First 100 GB free; remaining 5,000 GB charged at $0.02/GB = $100.00
- Total: $172.00
Site-to-Site VPN would cost $462.00 for the same job, so this is a good use case for Direct Connect.
Table Summary of AWS Data Transfer Costs
It can be hard to remember all these minute details about AWS data transfer costs, so we compiled all the key points into the following table for easy reference:
Data Transfer Type | Summary |
Data transfers in (DTI) | Free |
Data transfers out (DTO) | Service-dependent – check service’s Pricing pageRegion-dependent – check service’s Pricing pageFirst 100 GB of the month (across all services, all Regions) is freeAfter first 100GB, transfer costs start higher, and taper off as usage increases. |
Transfers within AWS | Same-Region, Same-AZ: freeSame-Region, Cross-AZ: may or may not incur charges; service-dependentCross-Region: usually does incur charges; service-dependent |
Between AWS and on-premises data centers | AWS Site-to-Site VPN: charged for open connection time and regular DTO costsAWS Direct Connect: charged for connection capacity, open connection time, and regular DTO costs. DTO costs are cheaper for Direct Connect. |
Tips To Reduce AWS Data Transfer Costs
Luckily, there are some sweet spots within AWS’s pricing model that we can capitalize on. Applying any of the following to your business can help you save, save, save.
Use Amazon CloudFront
Back when we examined DTO costs for S3, one line in particular might have caught your eye: transfers to Amazon CloudFront cost $0.00 per GB. How can we take advantage of this?
If you host your services on a webpage, for example, users on the other side of the globe may experience high latency. This is because data needs to travel from your local server over to their server thousands of miles away. With a content delivery network (CDN) like Amazon CloudFront, your content is cached in servers all over the world, enabling low-latency access to your services from anywhere.
This means that if you have a large amount of web content stored in an AWS origin like S3 or EC2, always use CloudFront for distribution. This effectively eliminates all DTO costs. Doing this is much cheaper than incurring DTO costs to use a third-party CDN.
Note that you’ll still incur costs for DTO from CloudFront to the public Internet, as well as for DTO from CloudFront back to your origin (i.e. through user POST requests). These costs once again depend on the Region. For a more in-depth discussion on CloudFront, check out our CloudFront Pricing and Cost Optimization Guide.
Keep Regions and AZs Top of Mind
When planning out large data transfers, consider the pathing of that data through various AZs and Regions. Wherever possible, choose the route that minimizes cross-Region and cross-AZ transferral. This generally leads to the most savings.
The rule of thumb is simple. If you can stay within the same AZ, do so. Otherwise, if you can stay within the same Region, do so. Don’t go cross-Region unless absolutely necessary.
When it comes to Regions, choosing the right one is crucial. Some Regions simply cost more than others to operate in. Also, if your business can afford staying out of certain Regions, that’s probably the right financial move.
Use AWS-Provided Services
There are quite a few AWS services and features designed to help reduce data transfer costs. Amazon CloudFront is one of them, and we had to give it its own section because it’s such an important use case. For on-premises workloads, you might look into a service like AWS Transfer Gateway and AWS PrivateLink.
Lesser known services might include features like AWS S3 Transfer Acceleration, which helps speed up data transfers and offers lower costs depending on your intended route:
Here, transfers using S3 Accelerator from US East (N. Virginia) to another US Region could cost just $0.0050 per GB. In comparison, the regular rate for data transferred out of US East (N. Virginia) to US West (Oregon) is $0.02 per GB, which is 4 times the cost.
Note Pricing Models and AWS Free Tier Limits
Being familiar with AWS’s pricing models can go a long way. Before any large data transfer operation, make it a habit to check the relevant service pricing pages so you know what you’re getting yourself into.
Take advantage of the AWS Free Tier as much as possible. Many services have quite a generous Free Tier; for example, Lambda gives you 1 million free function calls a month. Note that if you decide to add many accounts to the same AWS Organization, your Free Tier usage will be aggregated across all accounts in that organization. Read also AWS Lambda pricing and optimization guide here.
If you estimate you’ll have prolonged AWS usage at your organization over a couple years, consider looking into Savings Plans.
Use the AWS Cost Calculator
To estimate the costs of a data transfer, you don’t actually have to crunch any numbers yourself. Just use the AWS Cost Calculator! With its intuitive UI, it’s very simple to use. Suppose we wanted to know how much it would cost us to transfer 100 TB of data both in and out of S3 in US East (N. Virginia). The Cost Calculator spits out the answer right away:
Conclusion
There’s a whirlwind of information out there about AWS data transfers. While it may seem difficult to keep track of it all, we hope this guide gave you a good overview of the pricing model patterns that AWS uses. In addition, we shared a few simple general rules to help reduce data transfer costs. With a little careful planning, you can be hailed a hero for helping your organization cut back on one of the largest cloud expenses.
Of course, you don’t have to stop there. CloudForecast can give further personalized insight into how you can optimize your overall AWS spend, data transfers or otherwise.
Manage, track, and report your AWS spending in seconds — not hours
CloudForecast’s focused daily AWS cost monitoring reports to help busy engineering teams understand their AWS costs, rapidly respond to any overspends, and promote opportunities to save costs.
Monitor & Manage AWS Cost in Seconds — Not Hours
CloudForecast makes the tedious work of AWS cost monitoring less tedious.
More from CloudForecast
AWS cost management is easy with CloudForecast
We would love to learn more about the problems you are facing around AWS cost. Connect with us directly and we’ll schedule a time to chat!