Via some accidental clicking in the control panel (trying to get an IP address for the instance, I think?) I ended up getting a bill from them for over $100. Which, to me at the time, was a huge amount of money.
It put me off of AWS forever. I don't ever want something that tells me how much they're going to charge me after I have already given them my credit card information.
edit: they did credit me back when I complained, but that doesn't matter. The risk to me wasn't/isn't worth it.
One of my services had a Google BigQuery "budget" set at $100. One of our test machines went haywire and continuously submitted a bunch of jobs. The "budget" turned out only to be an alarm, and even that they sent us 8 hours late, after $1600 of charges had been racked up. I responded in 20 minutes and shut it down. Google insisted we pay the full bill. After I wrote up a blog post on the situation and had the "publish" button warmed up, they finally relented and refunded us for the amount of time their alarm was delayed. Absolutely ridiculous that's not their policy to begin with...
For a company that supposedly puts the customer first, this is appalling.
There are a number of resource types that, simply by existing, will accrue costs. A lot of them, actually. On AWS that includes things like running EC2 instances, EBS volumes, RDS databases and backups, DynamoDB tables, data in S3 buckets, and more. The question is what should happen to these resources upon hitting a billing ceiling?
Should EC2 instances be terminated (which deletes all data on them), DynamoDB tables deleted, S3 data erased, RDS databases deleted? If that was the behavior, it would be an extremely dangerous feature to enable, and could lead to catastrophically bad customer experiences. This is a nonstarter for any serious user.
Conversely, if you expect those resources to continue to exist and continue operating, then that's basically expecting the cloud provider to pay your bill. The provider will then have to recoup those costs from other customers somehow, and so this option sets poor incentives and isn't fair to others. If you expect your account to remain open the following month, you'd have to settle the bill, and we're back to square one.
AWS gives people tools to tackle this problem, such as billing alerts. These can notify you over SMS, email, or programmatically when you hit an "$X this month" billing threshold, and then you can decide what to do. Since these events can be processed programmatically, it's possible to build a system that will automatically take whatever action you'd like AWS to take, such as shutting things down or deleting resources.
If you think all of this through, it's really hard to come up with an approach to billing limits that's fair and a good experience, so I think it's reasonable for cloud providers to give billing threshold alerts while leaving the choice of what to do in the hands of the customer.
[0] https://cloud.google.com/appengine/pricing#spending_limit
> Important: Spending limits are not supported in the App Engine flexible environment
> You may still be charged for usage of other Google Cloud Platform resources beyond the spending limit.
Can it incur charges even if you've set up the server to only be a free tier?
Yes, you can incur charges if you exceed what's covered by the free tier. Not all AWS services even have a free tier, and those that do are severely limited (1 micro instance, 5GB of S3 storage, etc). You're not off in some sandboxed environment where they just shut you down if you go over the limits. It's more like a monthly credit of $X for the first 12 months of your account. To cover my ass, I set a really low billing alert threshold. Like "email me if my monthly bill ever projects to exceed $1".
It is worth trying if just to gain knowledge on AWS. But for hosting, I'd say DigitalOcean
I had a personal $400 learning experience with Amazon. They did refund it. My last company had a low-5-figure surprise a few years ago. Some of that could be considered their fault (alerts were sent to someone on vacation), but again, the refusal to allow the option of a "hit a limit, pull the plug" option is what causes this.
They have billing alerts ('beta') and used to offer a prepaid account type that they have discontinued for new customers (some may still have grandfathered accounts).
Closest thing now is the MSDN credit. It doesn't require a credit card and the account auto-suspends when you hit it. Problem with the MSDN credit is that it is for non-production only (and they reserve the right to kill anything they consider "production").
They should really offer prepaid again or bill caps. But Microsoft is too busy copying AWS to consider that they can do better than AWS.
It's not unlimited liability, most of their services have limits imposed. If you've scaled any service to thousands of machines you'll quickly find out that they stop you at 20-30 machines or so. Then you have to contact support to get the limit increased.
Sure you can still rake up an unpleasant bill. But there are limits :)
And I've done work for clients that have requested really big increases because of both realistic and unrealistic expectations of handling traffic peaks. E.g. one client asked for an increase to 100 instances of 2-3 different types in a few regions to be prepared to handle a couple of days of high traffic. If said event had happened, they scaled it all up, and somehow didn't take them down again, it'd only take a few days of charges for them to be insolvent at their then-current funding level.
So you're right, there are limits, but limits or not doesn't matter if it's high enough that it can make you go out of business.
Which makes me wonder if anyone has ever gone out of business because AWS was unwilling to forgive a "surprise" bill. I'd be inclined to assume that they're willing to stretch quite far to avoid that, given that they seem to be very good about it. But I'd also not want to stake my business on hoping Amazon will be charitable about something like that.
I agree with your larger point, but you're going to be surprised by a $500 bill, not a $500,000 bill.
Did you set a billing alert? Google BigQuery has proactive "cost controls" that won't let you go overboard, whereas billing alerts are just that - alerts.
They offer billing alerts, have a budget tracker thingy, but have no actual automated caps. Closest thing you can do is write one yourself using the AWS APIs.
Not a bug, this has been amazon's philosophy with accounts on all systems from very early on. Some of the initial designers of amazon knew families where multiple people shared one e-mail address, but wanted separate accounts for shopping.
Multiple accounts per e-mail address was a concious design decision for all Amazon systems.
There was no way at the time for me to a) see that I had a second account associated with my email address or b) reset the password for the second account without going through support c) merging the two accounts into one even with supports help.
It would be great if when entering your CC information, they let you set a default monthly cap for all your projects, to be overridden at the project level if you suddenly need to spend more.
Tested out the free tier of Amazon, but didn't realize spinning down and spinning up would ding me if they were within an hour.
Even know, when I use it for testing and I'm being fairly careful, I'll get a $3 bill at the end of the month. I was trying to set up alerts, but their alerts and dashboard, while I'm sure super capable, is a bit overwhelming as a new user.
It's why all of my projects sit on DO and I only really use Route 53 from AWS.