AWS price and cost — introduction
(This is part 1 of a series of blogposts related to pricing and cost in AWS)
I wanted to highlight this topic as I get a lot of questions related to this. It is important to understand all aspects of cost for both business and technical architects when starting to use AWS, and also in the further process of defining governance. I am based in Norway so my focus on this is from a European point of view and especially for those starting to use AWS from scratch with a single account. In a later blog-post I will describe some of the features for larger companies with multiple accounts.
The pricing in AWS is complex, which also makes it hard to know what it will cost to use AWS. It is important to understand the price lists and how billing works in AWS. It is possible to build high quality low cost solutions in AWS, and also possible to build low quality high cost solutions. A major concern for some are unwanted activity on your account, like crypto-miners etc.
The best way forward is to know and understand the pricing of the services and learn how to read the cost-information, monitor the spend and create cost-related alerts. You can also check out the pricing calculator to estimate your workload and understand more how the pricing works.
Designing the right architecture and choosing the right services is not something that we will look into here. What I will try to do is give you a better understanding of the pricing model and tools related to billing and cost that you have in AWS.
You should also be aware that the price might vary depending on which AWS region you are using, for example eu-central-1 is a bit higher in price on some services than eu-north-1. The variations are small and you should in general look at the region best related to your other requirements (latency, compliance, etc.) before looking at cost related to region.
Basics of pricing and cost
The prices in AWS normally reflect what you are actually consuming of resources. The pricing might be compared to other areas you are familiar with like hotels. If you stay at a hotel-room for one night, you are charged for one night. If you need to park your car you might be charged per hour. And if you consume something for the mini-bar you are charged for your consumption of those items. If you are a regular customer (with high spend with the hotel) you might be eligible for some discounts or you might get a credit voucher for a future stay.
When using AWS-services you will get a variation of your spend from month to month. both because your workload is varying, and also because the months are not equal (January has 31 days, and February has 28.25 days…on average)
AWS publishes price lists for each service and sometimes there are multiple lists for the same service as the price is broken down into features. You can access the price list and look at pricing examples for each service, for example https://aws.amazon.com/s3/pricing/
Charges can be per month, per million or per other unit, but are normally pro-rated to single requests or shorter timespan. For example the price could be “per month”, but might be prorated to a daily price when the bill is calculated so you only pay for the part of the month you are using the service.
There are different types of charges you need to think and know about when you are designing your solution or just using your AWS sandbox account to test new services.
There are three categories of free tiers in AWS. All categories have some limits to volume/size/usage so check it out. All free tiers are listed on https://aws.amazon.com/free/ as well as in the individual price lists.
- First 12 months free: When you sign up to an AWS account you get to use some services for free the first 12 months after signing up. For example you can store 5GB of data in S3 for free the first 12 months.
- Free trials: The first time you start using a service, you can use it for free for a defined period of time (check conditions). For example the first time you start using GuardDuty on an account, you get the first 30 days for free.
- Always free: A lot of services have a free tier for low consumption regardless if you have a new or old account. For example the first 25 GB of storage in DynamoDB is always free.
The “always free” tier is important to look at if you are doing estimations, the other two are important when it comes to testing new services etc.
Volume/request based cost
You are paying for the volume/requests you use, and typically you are paying nothing if you are consuming nothing. When a system is not used/idle, this category will normally not incur any cost. A request-based cost could for example be the number of mobile push notifications sent via SNS (after the 1M free tier).
Time based cost
You are paying for a service for a period of time regardless of how much you use the service. The charge is in most cases prorated which means that if pricing-page are stating the monthly fee and you are using the service less than a month you are charged the proportional amount. When a system is not used/idle, this category will in a lot of cases incur cost. It is important to have control of services with this billing-structure as it is easy to forget resources and they will be running forever, and make you pay forever. For example a running EC2-server has a time-based cost priced per hour.
Time and volume based cost
Sometimes you will see a combination of volume and time. This is again a category which is also adding to the bill even if a system is not being used. Normally there are ways to reduce this, but it is still important to have control of such services. For example storage used in S3 is priced as GiB per month.
For some services you will get a volume discount and for others you can get a discount if you commit to certain levels over a period of time (for example committing to pay for 10 servers for 1 year could give you ≈25% discount). more on this in a later blog post.
It is important to understand how AWS is pricing their services and also to know that the architecture you are designing is affecting the price. Services are priced at timed intervals and/or requests, and price might vary between regions.
I am based in Norway so my focus on this is from a European point of view and especially for those starting to use AWS from scratch with a single account. In a later blog-post I will describe some of the features for larger companies with multiple accounts.
In later blogposts I will look into more aspects of this topic; billing, estimation, monitoring and alarms and other tools for cost control.