The Blog

Is the AWS Free Tier really free?

Calendar Icon 09.16.2020
aws-section-divider aws-section-divider

Is the AWS Free Tier really free?

No. No! Oh my god no. It absolutely is not.

The AWS Free Tier is free in the same way that a table saw is childproof. If you blindly rush in to use an AWS service with the expectation that you won’t be charged, you’re likely to lose a hand in the process.

Let’s dive in to exactly what “free” means in this context.

The AWS Free Tier

The “free tier” comprises three distinct types of free offerings all under the same “Free Tier” label.

AWS Free Tier 1: Always free, as in ‘free puppy’

The first kind of free tier is a baseline level of service that’s always free. You can invoke 1 million Lambda invocations for free, and according to the AWS Free Tier webpage, you also get “up to 3.2 million seconds of compute time” per month. Meanwhile, the AWS Lambda pricing page states that you get 1M free requests per month and 400,000 GB-seconds of compute time per month.

Is one lying? Not at all! It’s just AWS’s way of describing the same thing differently, and thus far more confusingly.

At the smallest Lambda function memory allocation (128MB, which is one-eight of a gigabyte), eight seconds of runtime equates to one gigabyte-second. This makes perfect sense, because if there’s one thing AWS loves, it’s coming up with new pricing dimensions.

Isn’t that straightforward? Of course not. But let’s soldier on anyway.

By now, it should be starting to dawn on you that the free tier is carefully plumbed with clever traps to catch the unwary.

AWS Free Tier 2: Welcome to AWS, the clock is ticking!

The second kind of free tier is a 12-month period starting the day you first create your account. During this period, roughly 36 services offer you free usage up to certain limits.

Note: This only applies to some kinds of usage—even within those limits. Take EC2: You get 750 hours a month of t2 or t3 micro instance usage (technically, you get 750 hours EACH for a Linux instance and a Windows instance). If you spin up a c5.small instance instead, you’ll be billed starting as soon as you hit the launch button.

“Wow, a whole year of free EC2 instances? Hell yes!”

Slow down, hasty pudding. There are many caveats:

  • You get 30GB a month of free EBS (disk volume) storage. If you use any more than that, you’re going to start getting charged for it. It also doesn’t apply to io1 or io2 volumes, which can get…spendy. Oh, and heads up: you only get 1GB of snapshot storage for free!
  • You get 1GB of data transfer out to the internet for free each month in perpetuity. But you’ll get charged for data transfer to other availability zones in the same AWS region. Further, that free 1GB is shared between a whole bunch of services; you can use it up quickly if you’re not careful.
  • You get a free t2.micro in regions where they’re available. In regions where they aren’t, you instead get a free t3.micro. Get this wrong in either direction and you’re paying for it.

The AWS Free Tier is full of nonsense like this. You get a free load balancer but it’s only an ELB-classic or an Application Load Balancer; if you pick a Network Load Balancer or NLB, it costs you money. You can get a free Oracle RDS instance but only if you bring your own license. (If you believe anything’s free about an Oracle database, you have a painful learning experience in your future.)

AWS Free Tier 3: Trials

The third and final AWS Free Tier version is a service specific limited-time trial period that begins from your first use of a service. This applies to ANY use of the service, by any user in the account.

If one of your users spins up an Amazon Workspace to test something one day then turns it off, that free trial is over for the entire AWS account once the trial period ends. If you enable Amazon Detective, it’ll be free for 30 days, so your next bill is care-free and breezy. But the next bill after that might surprise you.

Let’s also not forget that different services have different trial periods, conditions, and terms. It’s kind of a grab bag of awful.

Who cares about the AWS Free Tier?

Most of the work my business does involves companies with large AWS environments. They really couldn’t care less about the free tier.

But an awful lot of folks who are just getting started with AWS as students very understandably mistake the AWS Free Tier for something it isn’t. A surprise $75 charge on something they’d thought was free can be very scary to someone on a tight budget.

And even well-established engineers playing around with a few tens of dollars in their AWS account can be shocked by a multi-thousand dollar surprise virtually overnight.

AWS Free Tier caveats

You can get alerted when you’re about to exceed free tier limits, which is a handy feature for avoiding surprise costs.

What’s less useful is that—due to the massive complexity that is the AWS billing system—billing alarms are on a one-day delay (give or take a few hours) and many dollars short of your actual usage to that point. When the first warning arrives in your inbox, you may discover that you’ve already passed the Free Tier’s thresholds.

Further, the patchwork nature of what’s free and what isn’t artificially constrains how beginners use AWS services. It seems pretty sensible to spin up your free EC2 instance in a private subnet—and then you’re very reasonably surprised when you get charged almost $80 a month for the Managed NAT Gateway (of course this service has no Free Tier; why would it?) attached to that subnet.

This has an unfortunate side effect of teaching beginners to use AWS services in ways that won’t serve them well in corporate environments. YOU may care about a $100 monthly surprise bill, but your employer most assuredly does not; they care far more about ensuring that their sensitive instances live in private subnets.

The AWS Free Tier thus makes suboptimal patterns something that folks pursue out of necessity.

What’s to be done about the Free Tier?

Personally, I think the model is broken enough that it’s time to drastically reimagine the AWS Free Tier entirely.

I get that it’s super hard, with an awful lot of moving parts. But Oracle, Azure, and GCP have all mastered this problem in a far more comprehensive, less user-hostile way.

I flat out refuse to accept that—with all of the brilliant people that AWS employs, the stunning levels of innovation they display, and the bedazzling array of fascinating customers who happily use their services—they can’t somehow solve this problem in a customer-obsessed way.

Help, I exceeded the Free Tier limits!

If you’ve found this blog post because you panic-searched for “AWS Free Tier” on the internet, calm down and breathe.

Open a ticket with AWS Support in your AWS account. Calmly explain what happened.

It will take days for them to respond! That’s okay!

If it’s your first time with an overage, they will almost universally waive the fee. Take it as a learning opportunity, and understand that you’re not alone. It’s not you; it’s very much them.

And if they don’t fix it for you, please let me know so I can demonstrate what Customer Obsession means to me.

aws-section-divider