Amazon’s Simple Storage Service is the world's most popular cloud object storage solution due to its durability, availability and scalability. However, unlike the name suggests, S3 cost calculations are far from simple. We explain why this is and what you can do about it.
If you are looking for a durable, available, and scalable storage solution at the lowest possible cost, Amazon’s Simple Storage Service (S3) is likely your best option. Amazon S3 takes advantage of the world's largest global cloud infrastructure to deliver 99.999999999% uptime and unlimited storage, while protecting sensitive data with the most comprehensive range of security and compliance capabilities.
So, what is the S3 cost? On the surface is appears very straightforward with Standard S3 typically costing $0.023 to $0.026 per GB per month (depending on your Region). However, many customers start to get confused when they see the variety of features and sub-services offered by AWS in order to provide a versatile user experience. Let’s break down the different types of Amazon Object storage and how they are charged for.
S3 cost: AWS cloud storage costs explained
When you first start using Amazon S3 as a new customer, you can take advantage of a free usage tier. This gives you 5GB of S3 storage in the Standard Storage class, 2,000 PUT requests, 20,000 GET requests, and 15 GB of data transfer out of your storage “bucket” each month free for one year. If you exceed the limits of the free tier, or when the offer expires, you pay the standard Amazon S3 cost for what you use.
Amazon S3 cost is based upon multiple factors. Primarily these include the volume of data you want to store, how often you will want to access it, add to it, or retrieve it, and the speed at which you want to retrieve with your data. Thereafter, there is a choice of how many regions your objects are replicated across—with some considerably cheaper options that are worth considering for storage if durability is not a concern.
There are four “storage classes”—Standard, Infrequent Access, One-Zone Infrequent Access (formerly Reduced Redundancy Storage), and Glacier. Which S3 storage class is right for your data will likely depend on how often you want to access it:
S3 standard storage
This class of S3 storage is suitable for the general purpose storage of frequently accessed data. Because you only pay for what you use, S3 standard storage is suitable for most cases including data-intensive, user-generated content such as photos and videos.
S3 infrequent access storage
This class is great for storing data you do not need frequent access to, but may need to access in a hurry—i.e. for disaster recovery. The Amazon S3 cost for infrequent access storage is less than standard storage, but you pay more each time you access or retrieve data.
S3 One-Zone Infrequent Access Storage
Usually, when data is assigned to a Region, it's distributed between at least three Availability Zones in order to maximize durability. With One-Zone Infrequent Access Storage, your data is placed in one Availability Zone—decreasing fault tolerance in exchange for a lower S3 cost.
S3 Glacier Storage
S3 Glacier Storage is for long-term data archiving. Typically this storage class is used when record retention is required for compliance purposes. Retrieval requests can take up to five hours to complete, which is why this is an inappropriate storage class for data you want to access quickly.
S3 Reduced Redundancy
Similar to S3 One-Zone Infrequent Access Storage, S3 Reduced Redundancy was originally introduced to offer a lower priced option for storage that was replicated fewer times than standard S3. However, when AWS dropped prices on S3 last year, they did not drop the price of Reduced Redundancy, rendering it obsolete by the fact that it now costs more than S3! Short story: if you have data stored on S3 Reduced Redundancy, get it off there ASAP and move to either S3 Standard or S3 One-Zone IA.
Confused about when to use each class of S3? Use this decision-tree to clarify when each class is most appropriate:
It is important to note that minimum capacity charges apply to data stored in the two Infrequent Access classes (current minimum is 128KB), and minimum storage duration charges apply to data stored in the two Infrequent Access classes (current minimum is thirty days), and S3 Glacier class (Current minimum is ninety days). In addition to the above considerations, you also have to take the following into account:
The cost of S3 requests
Although you are allowed a certain number of PUT and GET requests in the free usage tier, other requests have to be paid for, along with any PUT and GET requests above your monthly limit. Using Amazon S3 cost in the US East (Ohio) Region as an example, PUT, COPY and POST requests cost $0.005 per 1,000 requests in the S3 Standard Storage class, and double the amount in the two Infrequent Storage classes.
Data retrieval costs
There are also costs associated with retrieving data from the Infrequent Access and Glacier Classes (per GB retrieved). Data retrieval from the Infrequent Access classes is instant, but you will be charged a premium for a faster retrieval service in the Glacier class, although Amazon recently introduced an “S3 Select” tool that enables you to retrieve subsets of data from an object or archive in less time.
Data transfer pricing
Standard data transfers into an S3 bucket from the Internet are free of charge (for accelerated data transfers see Transfer Acceleration Pricing below), but transferring data in the opposite direction can add up. Amazon has a tiered data transfer pricing structure depending on the volume of data transferred out from an S3 service to the Internet each month:
You will also incur charges if you transfer data from one Region to another in order to take advantage of cheaper storage costs. For example, if you were to transfer data from the US West (Northern California) Region - where Infrequent Access Storage costs $0.019 per GB - to the US East (Ohio) Region - where Infrequent Access Storage costs $0.0125 per GB - the transfer would cost you $0.02 per GB.
Transfer acceleration pricing
If you need faster data transfers - for example to support global multiplayer video games - you can pay a premium for accelerated data transfers. Typically accelerated data transfers between an S3 bucket and the Internet cost $0.0400 per GB in both directions ($0.0800 per GB outside the US, Europe and Japan), but you will not be charged if the accelerated data transfer is no faster than a standard data transfer.
Other accelerated transfer options
For one-way data transfers into an S3 bucket of Glacier Archive, AWS offers three accelerated transfer options other than the Internet. These are useful substitutes if you have a large amount of data to transfer, but come at a premium that will increase your Amazon S3 costs.
- AWS Direct Connect transfers data through a dedicated port on a private network connection at speeds of up to 10GB per second, but at a cost of up to $2.25 per hour. This cost can be a factor if redundancy is required and you have to use more than one direct connection.
- Amazon Kinesis Firehose allows you to save streamed data to an S3 bucket. Depending on the format of the data, you may have to pay a conversion charge of $0.018 per GB as well as a storage charge of up to $0.029 per GB (US East Ohio Region).
- AWS Snowball is a petabyte-scale physical data transport solution that uses secure devices to transfer large amounts of data into and out of S3 storage. You pay a service fee “per job” plus daily charges (after 10 days), shipping costs and data transfer fees when moving data out of S3 storage.
- AWS Snowmobile is like Snowball but bigger, much bigger. The physical form is a 45-foot long shipping container pulled on a truck bed. It can hold up to 100PB per transfer. The pricing is based on the amount of data stored on the truck per month -- $0.005/GB per month.
Lifecycle transition requests
There are times when you will want to transfer data out of one storage class into another to take advantage of lower S3 costs—for example, when data stored in a Standard Storage bucket is not being access very frequently. You can transfer data downwards (i.e. Standard to Infrequent Access, or Infrequent Access to Glacier), and this will cost $0.01 per thousand requests into the two Infrequent Access classes, or $0.05 per thousand requests to transfer data into the Glacier Storage class.
Amazon S3 storage management & alternative storage services
AWS offers a host of paid-for S3 storage management solutions to help you manage your inventory of data, tag it and analyze it. You may also wish to take advantage of the Amazon CloudWatch and AWS CloudTrail services; which—although they offer free levels—can incur costs depending on the number of dashboards, metrics, alarms, logs and custom events you use or create each month. The newer offerings of S3 Inventory, S3 Analytics and S3 Object tagging are also popular ways to help you get a better handle on what is going on in your S3 environment. However, while the ability to tag S3 Objects has been a long standing request, many organizations are now faced with the challenge of how to go about tagging thousands, millions or even trillions of objects.
All of this only scratches the surface on Object storage. For block or file storage, AWS offers a variety of alternative services including:
- Amazon Elastic Block Storage.
- Amazon Elastic File System.
- Amazon EC2 Instance Store.
- Amazon Relational Database Services.
- Amazon DynamoDB.
An AWS management solution to consider
Additionally, establishing a Cloud Financial Management practice can also help manage and reduce AWS costs. Cloud Financial Management (CFM), also known as FinOps or Cloud Cost Management, is a function that helps align and develop financial goals, drive a cost-conscious culture, establish guardrails to meet financial targets, and gain greater business efficiencies. Learn more about establishing a Cloud Financial Management practice here.
If your head is not already exploding with the variety of Amazon S3 storage options and associated costs, you may want to consider an AWS management solution—CloudHealth. CloudHealth simplifies S3 cost calculations by analyzing how your data is stored, providing reports that can identify where inefficiencies exists, and helping you to optimize S3 costs over time.
Once optimized, our platform maintains the optimized state through policy-driven automation. You simply create policies that—for example—alert you when S3 costs have exceeded a certain amount for an account or region, so you can take action and migrate objects to a lower, less expensive tier. You can also get reports and alerts based on granular S3 charges like transfer costs, and analyze where data is being transferred to.