Amazon EC2 spot instances - is there a catch?

I needed to start a new EC2 instance today and decided to try out the new spot instances, where you can reduce your instance cost by bidding on the maximum per-hour price you're prepared to pay. Since today's spot price was only 3.5c / hour, compared with 8.5c / hour for an on-demand instance, I was wondering: if I just bid a really high price, say 10c / hour, can I effectively be sure of getting a much cheaper long-running instance than an on-demand instance (since the spot instances are only charged by the current spot price) ?

I suppose it's theoretically possible for the spot price to go over the on-demand price, but as far as I can tell from the data on the AWS site, the spot price has always been well below that.

UPDATE: I've been monitoring the small instance spot price for a few weeks and it's been very consistent, only varying between 2.9c and 3.1c. I wrote up a more detailed blog post on spot instances, including a link to a Nagios plugin I built to monitor the spot price.


In theory, that's the idea, but don't host a webserver or anything on it that can't die. This is traditionally used for distributed jobs like data churning, rather than services, since if the spot price goes over your max bid, your server turns off.

Also, just making sure you have your numbers right, it's $0.085 per hour for on-demand, not $0.85. Might make a difference in your projections :)


Well, bidding 10x the current price will help. However, in the past, there have been incidents which terminated all running spot instances in a given zone (price spike).

One important safeguard measure is to set your volumes persistent so that they survive any unwanted termination (this is true of any instance, after all). Another is to have clear, outlined backup and recovery plans-- what will you do if the instance terminates, if you loose your data in one zone (which happened in this spring's outage), if you loose instances/data across zones?

How much effort you put into the latter (worst-case) scenario is of course a matter of cost/benefit, but in general you'll want to have the same recovery plan in place for both spot and persistent instances.

Finally, spot instances cannot "stop" (be paused or 'turned off') and restarted. That's a notable consideration when diagnosing problems-- you're not going to be able to stop a hung instance, for instance, attach the volumes to another instance, make changes, and attempt restart. (You may be able to create an AMI and boot a new instance, of course).


The catch is that if AWS experiences heavy utilization of its resources, it will turn off your spot instance - spot instances are just a way for AWS to make at least some money on servers which are just sitting idle when demand is overall low.

Basically, it's not just a factor of the amount you bid vs. spot prices but also depends on overall utilization of the AWS region.