My First AWS "Free Tier" hosting bill was $900

TL;DR I built my novel shader graph editor, ShaderFrog, on AWS and chose the "wrong" configuration. Learn from my easily avoidable ignorance and pain and Amazon's dark UI patterns.

Trying out AWS

When preparing to launch ShaderFrog I looked for cloud server options. I had a Rackspace server, but it was too expensive and I wanted to reduce costs. My only other experience was with scammy shared hosts like BlueHost, and I wanted to learn something new. AWS looked like a popular choice so I dove in.

"Pay as you go"

A major part of AWS marketing is pay-per-use for their services:

"You only pay for the services you consume, and once you stop using them, there are no additional costs or termination fees." - AWS Pricing

They also market "free tier" products, less powerful instances that are free for the first year of use.

ShaderFrog is a fairly simple: A Node app, Memcache for sessions, Postgres for storage, and static files. It sounded like EC2, ElastiCache, RDS, and S3 were all perfect for me!

I set up all of the above services in AWS with default settings. Maybe you already know what I did wrong.

One Month of Idle Servers

Since it was "pay as you go", and I wasn't ready to deploy, I let my modest cloud infrastructure sit around for the first month. I didn't think anything of it until I received my first bill for $975.25.

Screenshot of my first RDS bill showing $805.32
Screenshot of my ElastiCache bill showing $169.63

Default Configuration

When setting up RDS, you're asked: is this going to be used "for production purposes?".

Screenshot of the AWS RDS configuration page where you can choose if a database will be used for "production purposes".

I didn't inspect this page closely. My thinking was: "Yes, I'm building a production environment, and AWS is pay-for-what-you-use, so an idle server won't cost anything. I didn't know what "Multi-AZ Deployment" nor "Provisioned IOPS Storage" were, nor did I care. Production is production, right?

The ElastiCache default setting is large, and even if you don't use it, you still pay for that hosting.

Learn From My Skimming Mistakes

I was new to cloud hosting, unfamiliar with AWS, and sold by the pervasive "free tier" and "pay as you go" marketing. Because of that, I didn't scrutinize what I was signing up for. Don't be like me.

None of the AWS setup screens directly have pricing on them nor suggest how much you're going to pay. When I contacted support, an agent said he was trying to push for pricing on these pages.

I checked what the RDS creation screen looks like today. I think it's worse than it was, making it look like an even more trivial choice:

AWS Support Made It Right

To Amazon's credit, they removed the bills from my account and gave me free hosting credits to make up for it. Their support was swift and professional.

That's It!

I hope this saves someone a headache. If my ignorance entertained you, consider following me on Twitter.