Why haven't you signed up for Amazon Web Services yet?
I know you’ve got worries
I know a lot of folks who are interested in learning about Amazon Web Services but, for one reason or another, many of them haven’t created an account yet.
Their reasons basically boil down to:
- “AWS only wants business, professional or certified customers.”
- “AWS will trap me in some kind of service contract.”
- “Creating an AWS account is complicated, and I don’t have time.”
Nope, nope, nope.
Fake news: AWS only wants “qualified” customers
The fine folks at AWS honestly, 100%, don’t care.
Well… I mean, they care that you need to be able to pay. And they care big time about you hosting illegal content on your account. As in, they’ll boot you off if you do.
But apart from that, they really don’t care.
In fact, it’s not like AWS merely tolerates lone coders doing their own thing. I reckon AWS bloody love them.
See, I honestly believe that one of the reasons why Amazon Web Services has been adopted by so many businesses today is because of their appeal to personal-project hackers at home. Many of the cloud developers I know today started on their career path by working on personal projects in AWS way before their employer asked them to do it professionally. These developers then evangelised AWS within their organisations, and – boom – adoption is kickstarted.
Seriously. Most folks in software development have stories about management dictating “thou shalt use platform X” and “thou shalt use framework Y” but – maybe just anecdotally – AWS adoption seems to tend from grassroots evangelism.
So, Amazon are very happy for “unqualified” folks to sign up and start hacking up personal projects. They know that today’s free-tier customers are tomorrow’s premium subscribers.
Fake news: Amazon will trap you in a business contract
Amazon Web Services is mostly pay-as-you-use. Mostly. There are a few exceptions, like:
- You can reserve some capacities and pay for them monthly on a contractual basis.
- You can sign up for a support contract with monthly payment obligations.
…but none of these things are the default options. If you wanted any of these, you’d need to go out of your way to hunt them down and use them. All the stuff that you’re typically going to use in AWS is pay-as-you-use.
EC2 – the Elastic Cloud Compute (or “virtual servers”) Service – is the prime example. As soon as you create an Amazon Linux or Ubuntu instance, a clock starts ticking and Amazon charges you per second until you terminate that instance.
A low-powered instance could cost millionths of a cent per second, while a high-powered instance could be thousandths of a cent per second. We’re not talking big money here, but you’re paying only for what you use.
If you deploy an operating system other than Amazon Linux or Ubuntu – say, Red Hat Linux or Microsoft Windows – then you’re billed per-minute rather than per-second, but still, you’re only paying for what you use.
Whichever you pick, the clock stops as soon as you terminate the instance and the cost accrued is added to your monthly bill.
In terms of EC2, the cost per-hour depends on:
- The specifications of the hardware you pick. The more RAM and CPU cores you add, the more you pay.
- The operating system you deploy. Amazon Linux doesn’t have any additional licensing costs, but Windows instances will cost a little extra.
- The Region you deploy into. Check out What are Amazon Web Services Regions? if you need a catch-up. Right now, though, an m4.large instance in us-east-1 costs $0.10/hour, while the same instance in eu-west-2 costs $0.116/hour. That’s nearly an extra two cents per hour. Scandalous!
- Prices vary over time, too. Physical hardware gets cheaper, and every so often AWS are able to reduce their prices. AWS even have a Pricing API if you want programmatic access to current prices.
Right, let’s check out a real-world example of pay-as-you-use costs!
Do you remember last month when I ran a bunch of latency tests between Availability Zones? Here’s the bill for that experiment:
I launched a bunch of low-power Linux instances in London for a total run-time of less than 30 minutes, and my bill came to a whopping one cent.
I also launched some low-power Linux instances in Sydney and Virginia which ran for such a short amount of time that they were – for all intents and purposes – free.
I mean, not exactly free. They still cost fractions of a cent. But they don’t even round up to a cent.
And that’s it. That’s all I had to pay. No subscription costs.
There’s no contract to escape from, because there’s no contract.
Fake news: Creating an account is complicated
You can sign up in couple of minutes. Faster if you’re a keyboard monster.
In fact, I’ve written a guide to creating an AWS account in 60 seconds(-ish).
Real news: Worry about pay-as-you-use costs
Okay. This one is for real.
In many ways, Amazon’s pay-as-you-use pricing can be more intimidating than a regular monthly contractual payment.
Being trapped in a contract sucks, but at least you know for sure what your bill will be, right? If you pay-as-you-go for what-you-use, then how do you know what to expect at the end of the month?
This is probably one of the most frequently asked questions I hear. Folks want to know how much their stuff in AWS will cost.
The unfortunate answer really is “it depends”.
There are so many variants of so many resources that you could deploy, it’s impossible to say. Some resources have additional charges for data transfer, too. Some services have additional charges for API calls.
So, what can I say you assure you that you won’t accidentally spin up a billion-dollar bill?
I want to touch on three topics:
- How you can reduce the risk of creating a large bill.
- How you can reduce the impact of a mistake.
- How you can reduce your anxiety about starting.
Reducing the risk
AWS accounts have service limits which prevent you from – for example – starting up 20+ EC2 instances. If you need more then you can raise a ticket to increase the quota. If you don’t, then rest easy that you won’t be allowed to go over that limit.
Reducing the impact
Mistakes happen. If you spin up something expensive, the cost is accrued immediately. You can’t go back in time and stop yourself. But, you can monitor your spending and take action (i.e. shut everything down and draft a begging letter to AWS Support) as soon as you see higher-than-expected usage.
It’s super-easy to view your month-to-date spending at any time, then contact AWS if you don’t know where a cost is coming from.
You can also set up billing alarms so you get a heads-up as soon as your costs start exploding, and I’ll write about this one day soon. Subscribe to the newsletter and come back for that one!
Finally, I don’t think there’s any substitute for experience.
- Show that you don’t make mistakes as often as you think you might.
- Give you an instinct for what future bills will look like.
This table shows my real-life, honest-to-goodness last-month bill for the AWS account where I experiment and host this blog:
|Service||United States $ cost in April|
My experience is that this is a very typical bill for the stuff I’ve got deployed. $3/month is well within my comfort zone, so I have confidence that future bills will also be this reasonable.
I can also use this information to plan ahead for some “worst case” scenarios. For example, what if my blog traffic spiked to 100× typical? Would I be left with a devastating bill?
Nah. See, the CloudFront distribution is the one thing that would need to do more work if the blog received more visitors. 100× that typical cost would make it $10.00. And that’s assuming that the blog receives 100× the traffic every day for the entire month. A spike of a day or two would be pretty much negligible.
So here, my experience gives me comfort. My experience tells me what to expect, and tells me it’s nothing to lose sleep over.
And if your costs do explode…
It’s incredibly unlikely, but if you do ever find yourself with a horrific bill then reach out to AWS Support immediately. I’ve heard anecdotal evidence that they can be very forgiving of honest mistakes.
But please, don’t let the fear of something stop you from trying.
Ah, go on then
Creating an AWS account is super-easy and I’m confident that you don’t me to walk you through it, but here’s my guide to creating an AWS account in 60 seconds(-ish) if you fancy it.