EC2 allows you to rent VPS instances by the hour at either a high fixed rate (called “on-demand” instances) or a much lower rate determined by auction that comes with fewer features (called “spot” instances). However, Amazon’s documentation is horribly obfuscatory when it comes to which features you’re giving up by going with spot instances.
Here is what you give up by going with spot instances:
- Your instance is terminated without warning if the spot price goes above your bid. This isn’t a huge issue, since even if you bid very high you’re still saving money on average by using spot instances.
- On-demand instances can be “stopped” (turned off while keeping all attached disks alive) or “terminated” (turned off while deleting all attached disks). Spot instances can only be “terminated.” However, you can use
ec2-modify-instance-attributeto set the delete-on-terminate flag to false for all attached disks — effectively you can turn a terminate into a stop. So this is not a true limitation. - You have little control over which availability zone (AZ) your spot instance is started in. If you specify an availability zone in a spot instance request, it may take much longer to start your instance — sometimes days! So all you can do is start your spot instance without specifying an AZ, and EC2 will put it in whichever one has room. This is a problem because volumes are only available in a single AZ.
I use EC2 mostly to run a single instance for long-running computations (my netbook just can’t hack it for running my research code, and my desktop is powerful but it’s at home). For my use case, it turns out that spot instances can be turned into on-demand instances. Here’s how it works:
- On shutdown, I change the instance attributes so the disks aren’t destroyed, then make a snapshot of the disk.
- On startup, I make an AMI that refers to the snapshot as the root volume, then request a spot instance for that AMI. This neatly avoids the problem of not being able to access volumes in a different AZ.
By doing this, I’m paying $0.14/hr for an m1.large instance instead of $0.34/hr. It costs around $0.08/hr just to in electricity to keep my desktop running, so EC2 isn’t exactly a burden. On days when I’m doing research software development, I just turn it on in the morning and leave it on all day.

Remote graphical access to Unix machines
As far as I can tell, these are the options:
It’s still way too hard to do this. Sometimes you really need graphical access!