Skip to content

Instantly share code, notes, and snippets.

@washal
Forked from marklit/_install.sh
Created December 22, 2016 13:16
Show Gist options
  • Select an option

  • Save washal/d3570b799da4a7ee6cf966fd3b4612b0 to your computer and use it in GitHub Desktop.

Select an option

Save washal/d3570b799da4a7ee6cf966fd3b4612b0 to your computer and use it in GitHub Desktop.
Find the cheapest availability zone across all regions for an EC2 spot instance type
pip install sh
from datetime import datetime
import json
from pprint import pprint
from sh import aws
regions = [ 'ap-northeast-1',
'ap-southeast-1',
'ap-southeast-2',
'eu-central-1',
'eu-west-1',
'sa-east-1',
'us-east-1',
'us-west-1',
'us-west-2']
instance_type = 'm3.xlarge'
prices = []
start_time = datetime.utcnow().isoformat()
for region in regions:
_prices = aws('ec2',
'describe-spot-price-history',
instance_type=instance_type,
start_time='%sZ' % start_time,
product_description='Linux/UNIX',
region=region)
_prices = json.loads(str(_prices))
prices = prices + [(p['SpotPrice'], p['AvailabilityZone'])
for p in _prices['SpotPriceHistory']]
pprint(sorted(prices))
[(u'0.032700', u'us-east-1e'),
(u'0.033400', u'us-east-1a'),
(u'0.033400', u'us-east-1d'),
(u'0.034100', u'us-west-1c'),
(u'0.034500', u'us-west-1a'),
(u'0.038400', u'us-east-1c'),
(u'0.038700', u'us-west-2c'),
(u'0.040400', u'ap-northeast-1a'),
(u'0.040900', u'sa-east-1a'),
(u'0.041000', u'us-west-2a'),
(u'0.041100', u'us-west-2b'),
(u'0.041200', u'ap-northeast-1c'),
(u'0.041300', u'eu-west-1c'),
(u'0.041400', u'eu-central-1b'),
(u'0.042000', u'ap-southeast-2b'),
(u'0.042000', u'eu-west-1b'),
(u'0.042500', u'eu-west-1a'),
(u'0.043500', u'sa-east-1c'),
(u'0.044600', u'ap-southeast-1a'),
(u'0.044600', u'ap-southeast-2a'),
(u'0.045100', u'ap-southeast-1b'),
(u'0.047500', u'eu-central-1a'),
(u'0.381100', u'sa-east-1b')]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment