Skip to content

Instantly share code, notes, and snippets.

@soulmachine
Forked from marklit/_install.sh
Created June 25, 2018 05:34
Show Gist options
  • Save soulmachine/42245720cb21feaac1ecc9f61aadf9d6 to your computer and use it in GitHub Desktop.
Save soulmachine/42245720cb21feaac1ecc9f61aadf9d6 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