AWS Free Tier, where's your spending limit? 'I thought I deleted everything but I have been charged $200'
Amazon's cloud arm criticised by users facing unexpected bills
Analysis Amazon Web Services has come under fire for lack of hard spending limits on accounts, after some users reported unexpected bills from what they thought were tutorial accounts.
AWS does not have a freemium business model (unlike, say, GitHub or Dropbox), but it does have "free tier" services that cost nothing to use, within their constraints (which may be severe).
The company provides these not out of generosity but to enable experimentation, presumably in the hope that this leads in due course to paying customers. There can be bill shocks though, as the company provides no built-in feature that caps spending to zero or even to a specified amount.
The issue came up earlier this month when cloud architect Forrest Brazeal reported on Twitter about a student who attended a Sagemaker (the AWS machine learning toolkit) tutorial and was sent a $200 bill, saying "I thought I deleted everything but I have been charged $200."
'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'
It is not a new issue though. AWS billing consultant Corey Quinn asked last year, "Is the AWS Free Tier really free", and said, "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."
As we understand it, AWS ran a workshop for several hundred attendees and provided instructions on shutting down instances, but in some cases students left early or did not follow the guidance and mistakenly left them running. AWS support credited these accounts, so in the end nobody should have been out of pocket.
It is not only novices that can get caught out. AWS Chief Evangelist Jeff Barr ran up unexpected charges when he "created a DB cluster for testing, but I was logged into my personal AWS account, not my official one. Time to talk to support," he said.
Oops! Created a DB cluster for testing, but I was logged in to my personal #AWS account, not my official one. Time to talk to support, and to use a budget (already had an alarm for half of my usual bill, which fired mid-month as expected). pic.twitter.com/YKEVysYDBh— Jeff Barr ☁️ (@ 🏠 ) 💉 (@jeffbarr) March 3, 2021
There's no limit
Contacting support with a sob story is all very well, but why not have accounts that have hard spending limits so this cannot happen?
AWS does provide mechanisms for preventing cost overruns, primarily via email alerts which users can configure. It is even possible to set up automation so that the billing alert will automatically shut down instances, though this is relatively advanced (given that free tier issues are often encountered by novices).
There are caveats though: "If you launch more AWS resources than the AWS Free Tier covers in a short period of time, you can exceed the AWS Free Tier limits before AWS can proactively notify you about exceeding the AWS Free Tier usage limits," the docs explain.
According to Quinn, "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."
What AWS calls the free tier actually has three types of offering. Trials are short-term and transition to paid services; 12-month offers are in effect longer trials; and always free offers never expire.
One of the issues, though, is that using a single AWS service is rare: generally users will use several services together, and the company's tutorials naturally encourage this. Some of those services may be free, others may cost – and careless acceptance of defaults can mean relatively high costs.
Google Cloud Platform has similar issues and solutions, though it does offer guidance on automatically disabling spend over an entire account by turning off billing, which disables all services. A request to "limit spend per project by day/week/month" has been "under review" since 2015.
Microsoft Azure is perhaps the best in this respect. There is a feature called spending limit that disables all services once reached, and this is applied by default to free trial accounts.
- Microsoft revokes MVP status of developer who tweeted complaint about request to promote SQL-on-Azure
That said, the spending limit cannot be applied to pay as you go accounts such as are likely to be used in production, only to various offers aimed at test and development. The full list is here.
Anxiety over the free tier is something that students rather than enterprises suffer, but that does not make it unimportant. Controlling costs is something that every business needs to do, and the ability to set hard spending limits on accounts could be a useful part of that for test and development. Why is it not on offer?
The official line may be to avoid the risk of production applications being disabled unexpectedly, but provided the feature is optional, this should not be a problem. It is surprising that the issue has not been properly addressed.
The Register has asked AWS why there is no spending caps on accounts. ®