Last updated: 2020-02-18
I’ll be updating my AWS articles from time to time, as I learn more. I got my first cert — the AWS Certified Cloud Practitioner certification — on January 22nd, but as I took the practice exams (5 exams, 2x each) and the actual exam, I learned about gaps in my knowledge. So I’ll be filling those in through the articles I wrote beforehand.
In my last article, we discussed the support options’ costs and EC2 pricing. This is a large topic, so I’m going to have to have a 3rd part since S3 takes up a lot.
I don’t believe the exams will ask about specific prices, as these can always change. But the important thing is understanding the relative pricing, so you could be able to make intelligent cost analysis decisions.
S3 is charged based on:
- Storage class
- Storage volume
- Storage time duration
- Requests (GET, PUT, COPY)
- Lifecycle rules
- Pattern monitoring for Intelligent-Tiering
- Data transfer
In general, monthly storage pricing rates go down as more storage is used. I’m not going to get into many specifics here because the prices can be in flux. You can always see the latest prices and details on the AWS S3 pricing page.
Storage and Transfer Requests:
I haven’t covered S3 storage classes in detail yet, so for now, I’ll give brief descriptions, and give you relative pricing between the classes. These are all monthly charges:
- S3 Standard – this is the most commonly used class for frequent millisecond access, and storage is usually charged (as of this writing) in a sliding scale of between 2 and 2.5 cents per GB of storage, a half cent per 1000 inbound transfer requests (note that “transfer requests” is different from “transfer volume,” discussed later), and a minuscule 0.04 cents per 1000 outbound transfers.
- S3 Standard – Infrequent Access – as the name implies, this is for infrequently accessed storage, but also with millisecond access. Storage is a lot cheaper, though; around half the price of S3 Standard. The savings over S3 Standard is only for storage. Since it should be infrequently accessed, transfer request costs are more expensive (around double the cost of S3 Standard).
- S3 One Zone – Infrequent Access – Similar to the above, but only in a single availability zone (AZ). Storage is slightly cheaper than the above; about 1 cent per GB. Transfer rates are the same.
- S3 Glacier – long-term archival backups with potential access delay time of several hours, but cheap, with a storage price under 0.5 cents per GB. Inbound transfer requests is a half cent per GB, and outbound is the same as S3 Standard.
- S3 Glacier Deep Archive – similar to the above, but with up to a 12 hour delay, and only accessed once or twice per year, but very cheap, with a storage price at a minuscule 1/10 of a cent per GB. Transfer request costs are the same as above.
- First Year S3 Standard – this is free for up to 5 GB with 20,000 outbound transfers, 2,000 inbound transfer requests and lists, and 15 GB transfer out per month.
One other transfer request cost is lifecycle costs (you can create rules to transfer to other storage options based on certain metrics we define, or Intelligent Tiering, which does this automatically for us based upon machine learning). To transfer to another standard storage class, the price is currently 1 cent per 1000 requests. Transferring to a glacier class is at 5 cents per 1000 requests.
There are also costs for retrieving data from glacier storage:
- Glacier Expedited Retrieval – $10 per 1000 requests plus 3 cents per GB.
- Glacier Standard Retrieval – 5 cents and 1 cent, respectively.
- Glacier Bulk Retrieval – 2.5 cents and 1/4 cent, respectively. TBH, I’m not totally sure what “bulk” transfer actually is, and couldn’t find a clear explanation. I believe it means at an entire bucket level (instead of specific files), but not sure. If anyone could clarify this for me, I’d appreciate it.
- Glacier Deep Archive doesn’t have an expedited option, but standard is twice the cost of Glacier and bulk is the same price as Glacier.
As mentioned above, we are also charged for data transfer volume per month:
- Transferring data into S3 from the Internet is always free. The same is true for S3 data transferred to EC2 instances in the same region as the S3 buckets. Data transferred out to CloudFront is also free.
- Transferring data out to the Internet from S3 is free up to 1 GB.
- The next 9.999 TB is currently charged at 9 cent per GB.
- The next 40 TB is currently 8.5 cent per GB.
- The next 100 TB is currently 7 cents per GB.
- Anything over 150 TB is currently 5 cents per GB.
- Remember, these are all per-month costs.
Transferring data from S3 to other regions is generally charged at 2 cents per GB, with the exception of N. Virginia, which is 1 cent per GB.
Finally, Transfer Acceleration (uses edge locations to boost speed) has a premium cost on top of the standard. This is generally 4 cents per GB, with the exception of inbound transfers to regions outside of the US, Europe and Japan, which is 8 cents per GB.