Amazon’s Simple Storage Service (S3) 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’re 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 does S3 cost? On the surface, it appears very straightforward with Standard S3 typically costing from $0.021 to $0.026 per GB stored per month depending on the Region and the volume of data stored. However, customers can 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 you’re charged for them.
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.
Beyond the free tier, Amazon S3 cost is based on 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 your data. Then, there’s a choice of how many regions your data is replicated across—with some considerably cheaper options if durability is not a concern.
There are six “storage classes”—Standard, Intelligent Tiering, Infrequent Access, One-Zone Infrequent Access, Glacier, and Glacier Deep Archive. Which S3 storage class is right for your data will likely depend on how often you want to access it.
S3 Standard 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 is great for storing data you don’t 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.
Usually, when data is assigned to a Region, it’s distributed between at least three Availability Zones in order to maximize durability. For data that isn’t accessed often, but still needs quick retrieval times and can tolerate lower availability rates, use One Zone Infrequent Access Storage. One Zone stores data in a single Availability Zone and offers a 20% discount compared to Standard Infrequent Access.
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, the pricing for this hasn’t been updated in several years, so it’s effectively become end-of-life as it’s now more expensive than Standard redundancy S3 storage!
Bottom line: if you have data stored on S3 Reduced Redundancy, get it off there ASAP and move to either S3 Standard or S3 One Zone Infrequent Access.
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.
For even longer-term data archiving, S3 Glacier Deep Archive offers cost-saving opportunities for data that is retrieved one or two times per year. An important consideration for organizations with large volumes of data to archive is that it may take up to 12 hours to resolve data retrieval requests.
Amazon also provides an Intelligent Tiering service to automatically transfer data between the Standard S3 and Standard Infrequent tiers depending on access patterns. The service can significantly reduce the management overhead, but incurs a monitoring and automation charge of $0.0025 per thousand items monitored.
Confused about when to use each class of S3? Use this decision-tree to clarify when each Amazon cloud storage class is most appropriate:
It’s 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 30 days), S3 Glacier class (current minimum is 90 days), and S3 Glacier Deep Archive class (current minimum is 180 days).
In addition to the above considerations, you also have to take the following into account:
Although you’re 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 the free tier 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, Reduced Redundancy, Glacier, and Glacier Deep Archive classes, and double that amount in the two Infrequent Storage classes.
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’ll 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.
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:
Data Transfer Out from S3 to Internet – US East (Ohio) Region – September 2020
Up to 1GB per month—Free
Next 9.999TB per month—$0.0900 per GB
Next 40TB per month—$0.0850 per GB
Next 100TB per month—$0.0700 per GB
More than 150TB per month—$0.0500 per GB
You’ll 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.
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 costs $0.0400 per GB in both directions ($0.0800 per GB outside the US, Europe, and Japan), but you won’t be charged if the accelerated data transfer is no faster than a standard data transfer.
For one-way data transfers into an S3 bucket of Glacier Storage bucket, or Glacier Deep Archive bucket, AWS offers four accelerated transfer options other than the internet. These are useful substitutes if you have a large amount of data to transfer, but they come at a premium that will increase your Amazon S3 costs.
There are times when you’ll 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 isn’t 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 and Glacier Storage Deep Archive classes.
AWS offers a host of paid-for S3 storage management solutions to help you manage, tag, and analyze your inventory of data. You may also wish to take advantage of the Amazon CloudWatch and AWS CloudTrail services. Although they offer free levels, they can incur costs depending on the number of dashboards, metrics, alarms, logs, and custom events you use or create each month.
The offerings of S3 Inventory, S3 Analytics, and S3 Object tagging are also popular ways to help you get a better handle on what’s 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.
With regards to alternative storage solutions, Amazon recommends using storage services other than S3 for rapidly changing data that have lower read/write latencies. Depending on the nature of the data, alternative storage services include:
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 isn’t 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.
The use of the abbreviations GBs, TB, and PBs is in itself confusing because, rather than use the decimal system for calculating storage sizes (1 gigabyte = 1,000 megabytes, etc.), AWS uses the binary system. In the binary system 1 gibibyte (GiB) = 2^30 bytes, 1 tebibyte (TiB) = 2^40 bytes, and 1 pebibyte (PiB) = 2^50 bytes. Most often these calculations are expressed multiples of 1,024 for ease of reference (i.e. 1 tebibyte = 1,024 gibibytes, etc.).
Because the volume of data stored in S3 buckets is likely to be variable over the course of a month, AWS calculates S3 storage costs using a method called “TimeStorage-ByteHrs”. This is a calculation in which the GiBs of storage used per hour are converted into bytes, each hour´s bytes usage is added together, and the total number of bytes divided by 2^30 to arrive at a GiBs-per-month total.
Using the prices quoted above as an example, let´s say your GiBs-per-month total was 600TiBs. The first 50TiBs (51,200GiBs) are charged at $0.023 per GiB ($1,177.60), the next 450TiBs (460,800GiBs) are charged at $0.022 per GiB ($10,137.60), and the remaining 100TiBs (102,400GiBs) are charged at $0.021 per GiB ($2,150.40). Your S3 storage costs for the month would be $1.177.60 + $10,137.60 + $2,150.40 = $13,465.60.
Assuming a 50/50 split between frequently accessed data and infrequently accessed data, the cost per month would be reduced to $10,674.60 plus the cost of monitoring and automation ($25 per 10 million objects). Please note that both this calculation and the one above ignores the cost of S3 requests, data retrieval, and data exchanges. We’ve also used the “ease of reference” conversion rate of 1 tebibyte = 1,024 gibibytes rather than 1 tebibyte = 1,099,511,627,800 bytes conversion rate.
Compared to Intelligent Tiering, CloudHealth can tell you when infrequently accessed data should be migrated to Glacier Storage or Deep Archive – potentially reducing S3 costs by significantly more. CloudHealth can also be configured to alert you when data retrieval costs from Infrequently Accessed and Glacier storage classes increase beyond the savings you are making.
However, most importantly CloudHealth gives you total visibility into the S3 services your organization is utilizing so you can make informed decisions about the most cost-effective way to organize data. For further information about CloudHealth´s optimization capabilities, don’t hesitate to get in touch and request a demo of our cloud management platform in action.