Amazon AWS pricing (website/server)

amazon ec2amazon-web-services

I have got two websites hosted on Amazon AWS and my traffic is anything but splendid, but still I need to keep them up and running. I have two elastic IPs. I am not 100% familiar with what is going on there exactly, but about half a year ago I followed some blog posts and achieved to host my own websites on EC2. Now, I pay about 40 USD per month which is quite a lot compared to other hosting companies, where you only pay 5 USD per month for multiple domains. Am I doing something wrong ? I initially opted in to use the advertised free tier, but ended up paying hourly per launched instance (I don't even know why).

Can somebody give me advice on how to use EC2 properly, or at least lead me into the right direction ?

About 99.5% of my bill is for paying the 0.020 USD per hour, for example last month's bill was pretty much made up of this:

$0.020 per Micro Instance (t1.micro) instance-hour (or partial hour) [1,488 Hrs]

which amounted to roughly 30 USD and then I have to add tax and my Route 53 Hosted Zones, which results in above mentioned 40 USD.

I would be very grateful for anyone to help me bring down these costs.

Best Answer

There are several things wrong with your costs.

Firstly, you need a single instance and the associated components - for both your sites. From your descriptions it sounds like you are running two instances, each one having its own elastic IP.

Amazon bills by the instance-hour - in a month there are 730 hours (24*365/12) - so if you run one instance for a month, you will be billed for approximately 730 hours. You have indicated that you were billed for 1488 hours - which is just over double 730 (take a month with 31 days, you get 24*31*2 = 1488). If you qualify for the free tier (and t1.micro instances do) the first 730 hours of t1.micro usage in the month will be free. (Your bill would have looked like:

  • USD 0.00 hourly fee per Linux/UNIX (free tier), t1.micro instance 744h 0.00
  • USD 0.02 hourly fee per Linux/UNIX, t1.micro instance 744h 14.88

If you have only had this account for half a year, it is quite possible you are actually running 3 instances - one falling under the free tier, and the other two are what you are being billed for.

AWS really shines at on-demand tasks - where you need to suddenly launch 10 servers for a couple of hours to handle a spike in demand. If you are going to be running a constant number of servers, you should look into reserved instances. With reserved instances, you pay an up-front fee - for either a 1 year or 3 year term, and get a reduced hourly rate. There are three types of reserved instances, depending on the proportion of time you expect to be running the server: light-utilization, medium-utilization, and heavy-utilization. With all reservations the upfront fee is non-refundable. With the light and medium utilization instances though, you only pay the hourly fee if you use the instance. With the heavy utilization reservation, you pay the hourly fee regardless of whether or not you use the instance.

Let's run the numbers on the scenarios:

  • 1 year has 24*365 = 8760 hours
  • On demand ($0.02) = $175.20 for the year ($14.60/mo)
  • 1 year - heavy reservation ($62 (upfront) + $0.005/h) = $105.80 for the year ($8.81/mo)
  • 3 year - heavy reservation ($100 upfront + $0.005/h) = $77.13 for the year ($6.43/mo)

The one downside of the reserved instances is that if you lock in your costs and AWS subsequently reduces their rates, you do not get the new lower rate. Despite this, reserved instances are still an excellent option, and there remains the possibility of selling the reserved instance (or buying one) on the AWS Marketplace which offers a few additional options.