You can reserve Amazon EC2 instances (see announcement).  They're called reserved instances because you're reserving an instance so you know it will be available if/when you need it.  But, if you know you'll be using an instance for a year, or three, it's also much cheaper!  (EC2 pricing)

I used to have one small instance $73 / month.  Now a micro instance goes for $6.43 / month!

$/hour $/year(s) $/month

Notes

Unreserved $.065 .065*24*365 $569.4 /12 $47.45 Dec. 2012
1 year small reserved $195 $.016 +(.016*24*365) $335.2 /12 $27.93
3 years small reserved $300 $.013 +(.013*24*365)*3 $413.88 /36 $17.82
1 year micro reserved $62 $.005 +(.005*24*365) 105.80 /12 $8.82
3 years micro reserved $100 $.005 +(.005*24*365)*3 $231.4 /36 $6.43
Unreserved
$.085 .085*24*365
$744.60
/12 $62.05

Jan. 2010

1 year reserved

$227

$.03

+(.03*24*365)

$489.8

/12

$40.82

 

3 years reserved

$350

$.03

+(.03*24*365)*3

$1138.40

/36

$31.62

 

Unreserved

$.10

.10*24*365

$876

/12

$73.00

Mar. 2009

1 year reserved
$325
$.03 +(.03*24*365) $587.8 /12 $48.98

 

3 years reserved
$500 $.03 +(.03*24*365)*3 $1288.40 /36 $35.79

 

 

Here's the commands to create a reserved instance (you'll need the new Amazon EC2 API Tools with the new commands):

  • Find current instance type:

$ ec2-describe-instances
RESERVATION    r-........    ............    default
INSTANCE    i-.....   ec2-..-...compute-1.amazonaws.com
domU-..-...compute-1.internal    running    0
m1.small    2009-01-20T16:21:12+0000    us-east-1a

  • From above:

zone: us-east-1a
type:  m1.small

  • Find reserved instance to buy (using above zone and instance type):

$ ec2-describe-reserved-instances-offerings -z us-east-1a -t m1.small
OFFERING    248e7b7..... us-east-1a    m1.small    3y     500.0    0.03    Linux/UNIX
OFFERING    4b2293b..... us-east-1a    m1.small    1y     325.0    0.03    Linux/UNIX

  • Buy one reserved instance using entire offering id from above (3y in this case).  This command costs $:

$ ec2-purchase-reserved-instances-offering -v -o 248e7b7..... -c 1
RESERVEDINSTANCES    f127bd27.....
REQUEST ID    ........-....-....-....-............

  • Look at purchased reserved instance:

$ ec2-describe-reserved-instances
RESERVEDINSTANCES    f127bd27.....    us-east-1a    m1.small    Linux/UNIX    3y     0.03    500.0    1    2009-03-13T16:01:39+0000    payment-pending