One of the most exciting moments of working with AWS is during the initial few days. You quickly sign up for an account and eagerly log in to the AWS console to get started tinkering in the maze of services.
Many take assurance that despite ponying up your credit card details, AWS offers a Free Tier that provides access to many AWS products for no charge. Most assume that this must mean that we’re protected by accidentally clicking a button that can lead to a surprise bill. After all, advertising for the free tier is front and center on the AWS home page. It’s something that AWS takes pride in by offering any developer the opportunity to play in the cloud for “free”.
But unfortunately, this isn’t exactly the case. New AWS practitioners that rely on the Free Tier to shield them from AWS bills are often met with a surprise.. Here are a couple of telling examples from social media:
- Has anyone gotten a surprise bill for using the FREE tier?
- AWS free tier invoice $419 with no usage please help
- And perhaps the most frightening: Was billed 60k with a free tier?
This sense of confusion is very common. It’s almost a daily occurrence to see a Reddit post or a Twitter thread complaining about surprise bills. AWS is quite aware of this problem as well, and this is likely one of the main reasons they are so forgiving for new AWS users that accidentally tick an option that leads to an unexpected charge.
Some of the responsibility of this predicament surely lies in the hands of AWS. The word “Free” is mentioned 4 times on the AWS home page as of time of writing, with text snippets such as “Get Started for Free”, “Start Building With Free Tier”, and “Use Amazon EC2, S3, and more–free for a full year”. That last one is the most transparent of the bunch, with a well deserved caveat placed to inform users of the restrictions of the Free Tier.
I do strongly believe that there is much AWS can do to be more transparent with what the Free Tier is and how it works. They do a little bit on their website but could do a lot more. But we all need to realize that as individuals, we are expected to understand caveats and limitations of what we’re signing up for. After all, we are providing our credit card information, and that alone should trigger warning signs that may make you think “hey, maybe I should actually read the details of the thing I’m signing up for”.
This article is meant to explain, in layman’s terms, what really is the AWS Free Tier. My initial response is… it’s kind of complicated. But fear not, all sources of confusion will be de-shrouded in this article.
In the next couple of sections, we will discuss the three main components of the Free Tier: the Free Trial, 12 months free, and Always free. Within the sections, I also interleave some tips to help you protect yourself from surprise bills and how to be more proactive in protecting yourself and your account. Now let’s start with Free Trial.
Every AWS user has access to a Free Trial for certain AWS services. These are short-term and time bound trial offers that begin on the date that you activate a particular service. When using the Console, AWS usually makes it very clear that what you’re signing up for is included in the free tier. Here’s an example of what it looks like to sign up for an AWS Lightsail instance which includes 3 months for free as part of the Free Trial.
The Free Trial also only begins when you actually launch the piece of infrastructure. So simply perusing the AWS Console and checking things out won’t cost you until you click that “Create” button.
The nice thing about the Free Trial is that it gives you access to certain AWS services that normally can be quite expensive and prohibitive to experiment with from a cost perspective. Using this option, you can play around with services like:
- Amazon Quicksight (30 days)
- Amazon Timestream (30 days)
- Amazon Neptune (30 days)
- Amazon Redshift (2 months)
You can use this link for a complete list of Free Trial eligible products.
Now, I do have one rant with the Free Trial which I think is one of the main reasons surprise bills are such a commonplace. Let me take a couple moments to explain.
Firstly, clear cut messaging like in the Lightsail example above are fantastic for everyone. They clearly communicate what’s free, make the product more enticing to try, and absolve AWS of much of the responsibility of dealing with “I didn’t know it wasn’t free!” criticisms. This is a positive example where what’s included is clearly indicated. But unfortunately, this isn’t always the case.
For example, in other services, such as Amazon Redshift, the Free Trial includes 2 Months of free access. Sounds great, right? Wrong. If you read the fine print, this only includes the DC2.large nodes, AND if you head over into the AWS console, there’s two very clear problems.
First is the fact that the details of the free tier offering disappears in the AWS Redshift console itself. I will caveat this by saying that there are some details on the Redshift Serverless Free Trial, but that’s a whole different story. Does this gap mean I need to tab back and forth between the Free Tier website and the service console to understand what’s included? This seems somewhat unrealistic to expect of AWS newcomers especially when what’s included in the Free Trial can often be very restrictive. My gripe is that AWS makes it difficult understand what is actually included in the Free Trial during the provisioning process. There’s a lot of room for improvement here to create a more streamlined experience.
My second problem is in the default settings of launching what you may think is a Free Trial eligible product. When heading into the console and selecting the DC2.large nodes that are supposedly included, the default number of nodes selected is 2. Now this may seem fine to most, but if you look closer at what’s actually included in the Redshift Free Trial, it’s 750 hours of the DC2.large node per month. 750 divided by 24 hours in a day is approximately 31 days. This means that only one node of compute for the Redshift service is all that’s covered by the Free Trial. This may seem like a small detail, and sure, you can change the setting to one if you’re an astute observer, but how many people, especially those that are brand new to AWS will actually do that? Failure to change this setting from 2 to 1 will end up costing you $182.50 USD per month – a staggering amount for an AWS newbie. The defaults here I’m sure are not malicious in intent, but they certainly aren’t playing into the customer’s benefit and being “Customer Obsessed” as Amazon likes to promote.
Here’s a screenshot of the user experience as it was on the day this article is being written:
This was just one specific example of a poor UX that is especially concerning for AWS newcomers. But how many more are there like this? In my opinion, there really needs to be a more comprehensive internal audit of Free Trial and default service settings – this needs to be made extremely clear in the Console experience. AWS needs to be more like Lightsail, and less like Redshift.
12 months free
Also included in the Free Tier is a concept of 12 months free. Unlike the free trial where the duration begins once the service is activated, the 12 months free starts ticking from the moment you create your AWS account.
The 12 month free aspect of the Free Tier gives access to a variety of different commonly used AWS services. For example, some top services included in the 12 months free access category are:
- An EC2 Instance (platform and region dependent)
- 5 GB of Amazon S3 Storage including 20k GET requests and 2k PUT requests
- An RDS Single-AZ instance with 20GB of General Purpose SSD
You can see more examples here.
This is an excellent way to get your hands dirty with the bread and butter of AWS and not worry about being charged.
One tip I have for you in this category is to be careful when selecting specific options for these services. For example, if you accidentally click on the “Multi-AZ” option when deploying an RDS cluster, or click on the wrong type of EC2 instance, you will be charged. Sometimes, the amount can be considerable. So make sure that if you’re creating resources that you think qualify for the 12 months free category, double check what’s included and make sure you’re selecting the right options in the console.
Always free requires a bit less explanation than the prior two categories and the name is exactly what you would expect. Services that are eligible for Always free are not bound by any time limitation. They remain free forever – but, within certain usage limits.
For example, here are some popular Always free services and their limits. These are all at the per month level:
- 25GB of DynamoDB Storage with 25 RCUs and WCUs
- 1 Million AWS Lambda Invocations
- 10 Amazon Cloudwatch Alarms
- 1 Million SNS and SQS messages
See the full list here.
Now despite being labelled as always free, it’s important to remember that if you go beyond the per month usage of any service, you will be charged for the difference. For example, if you use 1.1 million Lambda Invocations, you will be charged for the 100,000 (since 1 million are included for free).
For this reason, it’s important to keep tabs on your usage AND set up alerts in case you ever exceed them. And that’s exactly what I show you how to do in the next section.
Tips to Monitor Usage and Avoid Spending Money
Preventing accidental spend falls into two categories: Tracking and Alerting.
Tracking refers to keeping a watchful eye on your usage of AWS resources that qualify for the free trial, 12 months free, or always free. For each of these, there are sets of key metrics that you can monitor to make sure you are staying within the limit.
Thankfully, AWS has recently launched a new tool as part of the Billing Dashboard called the AWS Free Tier Monitor. This tool shows you at a glance your usage of services that qualify for the free tier, how much usage you have remaining under it, and a forecast of your estimated monthly usage based on your current trends. This is a very useful tool to keep track of regularly to ensure you’re not accidentally over-using any of the services that are included as part of the free tier. Below is an example of what the tool’s interface looks like.
To access this tool, you can either navigate to the Billing Dashboard and click on Free Tier under the billing subsection, or click this link after you log into your account.
From the alerting perspective, AWS now has available an automatic Budget Alerting tool that will send you a notification (email or other) when your spend exceeds a certain threshold. Most users use this to alert when the dollar value exceeds zero dollars. In other words, alerting you whenever you spend anything. This easy to set up configuration helps you get early warnings in case you ever do accidentally provision a resource that either doesn’t qualify for the free tier, or if you unknowingly clicked a setting that includes an additional feature that costs $. Here’s a screenshot of the budgeting tool for my setup which alerts if I ever exceed $25.00 per month.
Similarly, you can access this tool and create a budget in the Billing Dashboard under the Cost Management and Budgets subsection. Click on the orange Create Budget button to get started.
Separately, one last tip I have for you is to never, ever ignore AWS emails. At the end of every month, AWS will send you a summary email of your usage and bill amount. They will also send you recurring emails when you are approaching your Free Tier limits. Do not ignore these emails. Simply burying your head in the sand and thinking problems will disappear is naive at best–the problems won’t go away until you deal with them.
Other helpful resources is the AWS documentation on the free tier and how to track your usage and avoid unexpected charges.
The Free Tier is a helpful AWS resource that allows you to get experience with multiple different AWS services. Those included in the Free Trial (time bound usage) are especially helpful since some can be so expensive that experimenting with them can be prohibitive. Other offerings such as 12 months free and always free provide longer time frames for you to learn how to use and operate important AWS services.
Despite the user experience from AWS not being perfect, much of the responsibility to be aware of what IS and IS NOT included in the AWS user falls on you, the user. The good news is that there are a couple things you can do to protect yourself such as tracking your usage and alerting on cost spend. The bad news is that the current AWS Console experience doesn’t exactly make it easy to figure out what’s included and not included. And in certain limited circumstances (ehem Redshift), defaults are set to values that exceed the limits of what’s included in the free tier. So the lesson is, read the fine print, and be careful out there!