The Ultimate Guide to S3 Pricing: How to Calculate and Forecast Your Costs
With over 358,000 cloud platforms and services using Amazon S3 as their base, it’s easy to get carried away and go with the crowd. Yet, when it comes to S3 pricing you practically need a degree in S3 to be able to understand and cut your costs effectively.
That’s why we here at Aimably are going to take you through everything to do with S3 pricing from start to finish.
In this guide you’ll learn everything from the elements that make up your S3 bill and how much different storage class plans cost, to which options would work best for your own situation.
We’ll even teach you how to forecast your bill while factoring in changes that you’re planning to make – something that Amazon doesn’t do natively!
Here’s a peek at this guide’s structure:
- Why is S3 pricing so complicated?
- Base price depends on your S3 storage class
- Bonus S3 pricing charges
- How to see your current S3 bill
- How to calculate your future S3 pricing
- The best way to simplify your AWS bill
Ready to take notes? Good, because we’re about to teach you the whole thing.
Nội Dung Chính
Why is S3 pricing so complicated?
Source, image in the public domain
It would be all too easy to say that your S3 pricing is based entirely on what pricing plan you choose. At a base level it’s super simple – you pay for what you use and that’s it.
The trouble comes with deciding which pricing plan is best for you, and what extras you’ll need to pay for.
In order to calculate and understand your S3 bill you thus need to understand what the pricing is for every S3 plan, and why you might want to use each. Then you need to know what extras you’ll need to pay for and the amount of data you’ll be working with.
Plus, as per usual, Amazon is pretty bad at explaining this themselves and even worse at clearly showing you how to calculate what you’d be spending if you made your intended changes.
It’s a lot to cover, so let’s get started by exploring the S3 pricing for different storage classes.
Base price depends on your S3 storage class
The first element of S3 pricing is your storage class. These are essentially different types of storage for your data that vary in effectiveness when it comes to your access needs, its resiliency, and your cost requirements.
There are 7 storage classes to choose from:
- S3 Standard
- S3 Intelligent – Tiering
- S3 Standard – Infrequent Access
- S3 One Zone – Infrequent Access
- S3 Glacier Instant Retrieval
- S3 Glacier Flexible Retrieval
- S3 Glacier Deep Archive
Also, a quick disclaimer before we begin, the prices listed here are accurate as of July 12th, 2022.
S3 Standard
Source, image in the public domain
S3 Standard is suited to almost any frequently accessed data due to its high throughput and low latency. It’s designed to be 99.99% available over a given year too, so reliability is also top-notch.
As the standard storage class it’s thus suited to a huge range of use cases, from mobile apps and games to cloud applications and big data analytics.
S3 Standard is priced at $0.023 per GB for the first 50 TB stored per month, dropping to $0.022 per GB for the next 450 TB, then $0.021 per GB for anything over that initial 500 TB.
S3 Intelligent – Tiering
S3 Intelligent is suited to data where your access frequency varies over time or is unknown, as the plan will automatically shift data to the most appropriate tier (with according costs).
It’s made up of several tiers relating to the frequency with which you access your data. The more frequently accessed data is, the more it costs to store, but if you don’t access certain data regularly then it will automatically be moved to a lower access tier which is cheaper.
This means S3 Intelligent Tiering is best for workloads such as data lakes, analytics, and user-generated content.
To start there is a $0.0025 cost for every 1,000 objects over 128 KB to cover monitoring and automation costs.
For the Frequent Access Tier there are three price points which are the same as S3 Standard. That is, your first 50 TB/month cost $0.023 per GB, the next 450 TB/month cost $0.022 per GB, and any extra storage is $0.021 per GB.
The Infrequent Access Tier is much cheaper, costing $0.0125 per GB for all storage, and the final Archive Instant Access Tier costs just $0.004 per GB.
Finally, S3 Intelligent also offers optional asynchronous tiers for files that are rarely accessed, with the Archive Access Tier costing $0.0036 per GB per month, and the Deep Archive Access Tier costing $0.00099 per GB per month.
S3 Standard – Infrequent Access
S3 Standard – Infrequent Access is suited to data which you don’t access often, but still needs to be accessed quickly when you do. Think of it as the manual equivalent to S3 Intelligent’s lower access tiers.
It’s suited to storing disaster recovery files, long-term storage, and any backups that you might need immediate access to.
S3 pricing for this tier is the same as the Infrequent Access Tier for S3 Intelligent at $0.0125 per GB per month, but there are no extra monitoring and automation charges like there are for S3 Intelligent.
S3 One Zone – Infrequent Access
S3 One Zone’s Infrequent Access tier is a great, cheaper alternative to the S3 Standard Infrequent Access tier. While they’re both designed for similar use cases, S3 One Zone trades off a minor amount of recall speed and the reliability of your data being replicated across multiple zones for lower costs.
As such this tier is best suited to storing secondary data backups or data that’s easily recreatable, if lost. It costs $0.01 per GB stored per month.
S3 Glacier Instant Retrieval
The three Glacier storage classes are designed for data archiving, with the Instant Retrieval tier aiming to give you immediate access to your files. As such it’s best suited to cases such as archiving user-generated content, medical images, and news assets.
S3 Glacier Instant Retrieval costs $0.004 per GB stored per month.
S3 Glacier Flexible Retrieval
Source, image in the public domain
S3 Glacier Flexible Retrieval is best used for data which is used very rarely (one or two times per year) and is retrieved asynchronously. It’s particularly useful when you need to keep an eye on costs (as it automatically balances retrieval time with what is currently the cheapest option) and for when you need to bulk retrieve data without wanting to spend large amounts on that retrieval.
For example, offsite data storage is a perfect use case, as you likely aren’t worried about immediately having access to your data but may need to bulk retrieve a lot of it at once when you do need it.
S3 Glacier Flexible Retrieval costs $0.0036 per GB stored per month.
S3 Glacier Deep Archive
Finally, S3 Glacier Deep Archive is the cheapest data storage option that S3 offers although it is also the slowest to retrieve data from. It’s best used for data that will at most be accessed once or twice a year and doesn’t need to be restored within 12 hours.
This storage class sees most use among industries that are forced to keep data for extended periods (eg, legal or financial organizations) to comply with regulations but don’t often need to actually access what they store.
S3 Glacier Deep Archive costs just $0.00099 per GB stored per month.
Bonus S3 pricing charges
So far, so simple. You’re paying to store your data, with the rate depending on which storage class you choose, which itself dictates how quickly you can retrieve your data and (in one instance) whether it’s automatically adjusted to save you some money where possible.
Now we reach the bonus charges. These include:
- Bucket requests and data retrieval
- Data transfer
- Management features and analytics
- Replication costs
- S3 Object Lambda
Most extra costs also vary based on the storage class that they apply to. For example, data retrieval costs are generally higher as you travel down through storage classes from S3 Standard all the way to S3 Glacier Deep Archive.
Once again, this is going to involve a lot of figures, so you may want to take note of the ones which you know apply to your S3 buckets.
Bucket requests and data retrieval
Different requests and data retrieval in general come with their own costs. For reference, each of the following retrieval costs is per 1,000 requests made unless stated otherwise. All prices are based on US East (Ohio) storage.
S3 Standard costs $0.005 for PUT, COPY, POST and LIST requests, and $0.0004 for GET, SELECT, and all other requests. There is no charge for data retrieval.
S3 Intelligent – Tiering costs the same as S3 Standard for requests at all levels, with an extra $0.01 for lifecycle transition requests. A $10.00 charge also applies for data retrieval requests in the Archive Access, Expedited class, with an extra $0.03 for every GB of data retrieved.
S3 Standard – Infrequent Access and S3 One Zone – Infrequent Access both charge $0.01 for PUT, COPY, POST, LIST, and lifecycle transition requests, with GET, SELECT, and all other requests costing $0.001. They also charge $0.01 per GB of data retrieved.
S3 Glacier Instant Retrieval charges $0.02 for PUT, COPY, POST, LIST, and lifecycle transition requests, with GET, SELECT, and all other requests costing $0.01. There is also a cost of $0.03 per GB of data retrieved.
S3 Glacier Flexible Retrieval is another variable class when it comes to data retrieval costs, but for requests it’s at least consistent. It’s $0.03 for PUT, COPY, POST, LIST, and lifecycle transition requests, and $0.0004 for GET, SELECT, and all other requests.
Within S3 Glacier Flexible Retrieval there are four sub-classes, being Expedited, Standard, Bulk, and Provisioned Capacity Unit. Bulk has no retrieval costs, but Expedited costs the most at $10.00 for retrieval requests and $0.03 per GB retrieved. Standard costs $0.05 for retrieval requests and $0.01 per GB retrieved, and Provisioned Capacity Units cost $100.00 per unit retrieved.
Finally, S3 Glacier Deep Archive costs $0.05 PUT, COPY, POST, LIST, and lifecycle transition requests, and $0.0004 for GET, SELECT, and all other requests. It also contains two sub-classes, Standard and Bulk. Standard costs $0.10 for retrieval requests and $0.02 per GB retrieved, and Bulk costs $0.025 for retrieval requests and $0.0025 per GB retrieved.
Data transfer
Data transfer costs are one of the most complicated parts of S3 pricing, as not only do prices depend on which regions you’re transferring data to and from, but there are also multiple exceptions for which you don’t have to pay at all.
There is no charge associated with:
- The first 100GB of data per month transferred out to the internet (across all AWS Services and Regions except China and GovCloud)
- Transferring data into an S3 bucket from the internet
- Transferring data between S3 buckets in the same AWS Region
- Transferring data from any S3 bucket to any AWS services within the same AWS Region as the bucket
- Transferring data out to Amazon CloudFront
Otherwise prices are as follows (based on Us East (Ohio) bucket location).
For data transferred out of your S3 bucket to the internet it costs $0.09 per GB for the first 10 TB per month, the next 40 TB cost $0.085 per GB, the next 100 TB cost $0.07 per GB, and anything above that first 150 TB costs $0.05 per GB. Transferring data out of S3 to AWS GovCloud (US-East-or-West) costs $0.02 per GB.
Costs for transferring data out of your S3 bucket to a different AWS Region vary depending on the region you’re transferring to. All Regions outside of the US cost $0.02 per GB transferred, with the different US Regions varying from $0.02 to $0.01 per GB.
S3 Multi-Region Access Points lets you take advantage of whatever AWS Region will give you the lowest latency for your data (assuming you have identical data stored there), albeit at an extra cost of $0.0033 per GB to cover data routing fees.
If you go one step further and request internet acceleration while using S3 Multi-Region Access Points, it will cost you extra to transfer data in and out of S3 from or to the internet. These secondary costs will be much more expensive if you’re accelerating the connection between your own region (NA, SA, Europe, Asia Pacific) and another. Prices range from $0.0025 per GB to $0.0600 per GB.
Finally, you can pay extra for S3 Transfer Acceleration, which accelerates the connection between a client and a single S3 bucket via an AWS edge location.
S3 Transfer Acceleration costs $0.04 per GB transferred into S3 from the internet via AWS Edge Locations in the United States, Europe, and Japan, and $0.08 per GB for all other locations. Meanwhile, transferring data out of S3 into the internet or between S3 and another AWS Region costs $0.04 per GB transferred.
Management features and analytics
S3 comes with many storage management features and analytics available (eg, Amazon S3 Inventory, S3 Storage Class Analysis, S3 Storage Lens, and S3 Object Tagging), and each of these comes with its own extra costs which contribute to your overall S3 pricing. Obviously these will only apply if these features are turned on in your account, but let’s cover them quickly now.
Once again, all prices are based on Amazon’s figures for US East (Ohio) services.
Amazon S3 Inventory costs $0.0025 per million objects listed, while S3 Analytics Storage Class Analysis costs $0.10 per million objects monitored per month, and S3 Object Tagging costs $0.01 per 10,000 tags per month. So far, so simple.
S3 Storage Lens charges nothing for their free metrics, but their advanced metrics and recommendations cost $0.20 per million objects monitored per month. S3 Batch Operations costs $0.25 per job and $1.00 per million object operations performed.
Finally, S3 Select and S3 Glacier Select costs vary depending on the storage class your data is in.
For S3 Standard and S3 Intelligent it costs $0.002 per Gb scanned and $0.0007 per GB returned. Both Infrequent Access classes (S3 Standard – I.A. and S3 One Zone – I.A.) charge $0.002 per GB scanned and $0.01 per GB retrieved.
Moving onto the Glacier classes, S3 Glacier Instant Retrieval costs $0.002 per GB scanned and $0.03 per GB retrieved. S3 Glacier Deep Archive doesn’t charge for either. S3 Glacier Flexible Retrieval costs vary depending on the sub-class your data is in. For Expedited, it’s $0.02 per GB scanned and $0.03 per GB retrieved, for Standard it’s $0.008 and $0.01 respectively, and Bulk charges $0.001 and $0.0025 respectively.
Replication costs
Let’s step up the pace – we’re nearly through the hard figures!
S3 Replication Time Control data transfer costs $0.015 per GB, but there is slight variation when it comes to Batch Operations.
You’ll be charged $0.25 per job carried out by S3 Batch Replication, $1.00 per million objects processed, and there’s an optional cost of $0.015 per 1 million objects in the source bucket if you use the AWS-generated manifest to guide which objects are being replicated.
S3 Object Lambda
Finally there’s S3 Object Lambda. This lets you add custom code to your S3 GET requests to alter the data that it returns, such as filtering data rows, resizing images, and so on. S3 Object Lambda is powered by AWS Lambda functions however, meaning that you can’t use one without the other.
S3 Object Lambda pricing thus depends on your use of AWS Lambda, as without that there is no data to retrieve.
S3 Object Lambda costs $0.005 per GB. So, for example, if AWS Lambda has been used to filter 1,000,000 objects that average at 500 KB per object, your S3 Object Lambda data return costs would be 1,000,000 x 500 KB x ($0.005 per GB), which equals $2.50.
Once again, these figures are based on US East (Ohio) costs.
How to see your current S3 bill
Source, image in the public domain
Thankfully, there is a simple way to see your current S3 bill without losing your mind calculating every last figure. All you need to do is look at your AWS Billing console.
AWS Billing console lets you see what your current S3 pricing point is based on your service usage. This, in turn, allows you to take stock of how much your S3 usage is currently costing you and see where the majority of your costs are coming from.
For example, let’s say you notice that a huge chunk of your data is being stored under the S3 Standard class. However, you also know that at least half of that data doesn’t need to be accessed often (eg, a backup of operational data or a second backup of user-generated content).
Knowing this, you can see that you can stand to save a lot of money by changing that data to be stored on, say, one of S3’s Glacier plans.
Here’s the problem; AWS Billing isn’t useful for predicting your future spending if that spend isn’t based on historical data. In fact, that’s precisely what it can’t do.
You need to know whether these changes are likely to be for the better before you make them. You need a method to calculate your S3 pricing based on the changes you want to make.
That’s why we’re here.
How to calculate your future S3 pricing
Source, image in the public domain
There arethree main stages (with a couple of minor steps) to calculating your future S3 pricing while factoring in changes you wish to make. These are:
- Figure out which service you want to use
- Work out the scale of the billing
- Decide what management layers you need on top
- Summing up your bill
Figure out which service you want to use
First you need to figure out which service (storage class) you want to use. This will depend on the type of data you’re planning to store, how often you’ll need to access it, how quick that access needs to be, and how critical your access to it (and the speed of that access) is.
You don’t need to dive into specifics just yet – merely identifying what types of data will be placed into which storage class is enough. For example, user-generated content can be stored in S3 Intelligent – Tiering, as this will allow content (data) which is accessed less to be automatically moved to a cheaper storage class.
Work out the scale of the billing
Once you know what storage classes you’ll be using it’s time to work out the scale of your billing. That is, how much you’ll be storing in total, how often you’ll be placing or querying your data, and how often you’ll be retrieving it.
This will help you to get a broad picture of what your bill will look like and firm up your decision of which storage classes you’ll be using.
The main qualifier with this stage is that you will need to have a rough idea of how many customers you have and how often they will be requesting various data types from you.
So, let’s say that you summarize that your cloud application and the infrastructure surrounding it will take up 50 TB of space and needs frequent access, so that will go on in an S3 Standard bucket.
Decide what management layers you need on top
Now you should take a look at the bonus charges laid out above, work out which optional bonuses will be used or applied to your bill, and estimate how much the cost of replication, transfers, and so on will be.
This includes the cost of requests and data retrievals, so bring your customer estimates back in at this stage too!
For example, let’s say (to keep things simple) that your cloud app on the S3 Standard plan gets an average of 400 requests per second. Half of these are PUT, COPY, POST or LIST requests, while the other 200 are other requests.
There are roughly 2,592,000 seconds in a 30-day month and pricing for S3 is per 1,000 requests. At 200 requests of each pricing tier per second it takes 5 seconds to make 1,000 requests, so you’ll be charged for 518,400 sets of requests in each price tier.
That means that you have ((518,400 x $0.005) + (518,400 x $0.0004)), which totals $2,799.36 in data requests, per month.
Your 200 TB of user-generated content on S3 Intelligent – Tiering doesn’t incur any data retrieval costs, and for the sake of simplicity, let’s say that you never need to access your backups, so there are no extra costs for requests or retrieval from your S3 Glacier Instant Retrieval bucket.
Let’s also say that you transfer 50 TB of data per month from Amazon S3 to the internet. This costs $0.09 per GB for the first 10 TB, $0.085 per GB for the next 40 TB, and $0.02 per GB to transfer to your target customers’ region of US West (Los Angeles). This totals $5,300, monthly.
We’ll say that you do not opt-in for any extra management or analytics features, don’t use AWS Lambda so have no need for Object Lambda, and don’t require any data replication.
Summing up your bill
So, we’ve already got some of your figures worked out! Now it’s time to work out your base storage costs and pull everything together.
Let’s say you have a total of 500 TB of data to store. 50 TB covers the cloud application you’re running and the infrastructure to keep it running, 200 is user-generated content for that cloud app, and the other 250 consists of backups for the first 250.
Knowing what we’ve laid out above, you know that you’ll need 50 TB (your cloud app and infrastructure) on the S3 Standard plan to access it often, the 200 TB of user-generated content (which has varying access requirements) can be on the S3 Intelligent – Tiering plan to automatically adjust based on need, and your backups can be stored on S3 Glacier Instant Retrieval.
So your total S3 storage costs come to 50 TB on S3 Standard ($0.023 x 50,000 GB), 200 TB on S3 Intelligent – Tiering (($0.023 x 50,000 GB) + ($0.022 x 150,000 GB) + ($0.0025 x 75,000 objects), and 250 TB on Glacier Instant Retrieval ($0.004 x 250,000 GB).
This brings your total costs for storage alone to $6787.50 per month.
Add to that the $2,799.36 for data requests and $5,300 for data transfer and your total S3 pricing looks like it will be $14,886.86 each month.
Now that you have this figure you can tweak elements to see how much different choices could save you. For example, moving some of your backups to S3 Glacier Deep Archive could save you a tidy sum.
Alternatively you can forecast how much an increase in your S3 pricing will be with the same method. This lets you judge whether, say, using some of the optional paid management and analytics features of S3 would be worth the investment versus the time and effort they would save.
The best way to simplify your AWS bill
We’ve just spent the better part of 4,000 words teaching you how to understand, calculate, and forecast your S3 pricing. There are thousands of different use cases and combinations of pricing that you can choose from, making it impossible to give the best advice for optimizing every situation.
Thankfully, there is a better and easier way.
Aimably provides you with the tools and services you need to make the most of your AWS account and take full control of your AWS spending.
Our AWS Spend Transparency Software will help you to understand the trends in your S3 and wider AWS account to gain insight into your final bill and accurately forecast what future spending will look like. It can even send you notifications when your costs spike to prevent any nasty surprises come invoice day.
Going one step further, our highly trained and dedicated experts will develop and maintain cloud financial maturity for you with our AWS Financial Operations Services. With their help you can have total confidence in your financial statements and modeling, letting you focus on the work that matters; your own success.
Don’t let your S3 pricing or AWS spending get out of hand, and stop losing sleep trying to predict the future with what little information S3 pricing and AWS Billing provide you. Contact Aimably today!