Skip to content

Instantly share code, notes, and snippets.

@Sam-Martin
Created July 16, 2018 15:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Sam-Martin/b20177ef0881a649b14b5db49b905656 to your computer and use it in GitHub Desktop.
Save Sam-Martin/b20177ef0881a649b14b5db49b905656 to your computer and use it in GitHub Desktop.
Rough Price of EC2 Spot Instances Globally
from __future__ import division
import sys
import collections
import boto3
import pprint
import re
from datetime import datetime, timedelta
ec2 = boto3.client('ec2', region_name='eu-west-1')
aws_regions = []
for region in ec2.describe_regions()['Regions']:
aws_regions.append(region['RegionName'])
def print_summary(price_array):
avg = (sum(price_array)/len(price_array))
print " avg: %s" % avg
print " max: %s" % max(price_array)
print " min: %s" % min(price_array)
def get_spot_price_history_all_regions(instance_type, os='Linux'):
global_price_list = {}
for aws_region in aws_regions:
ec2 = boto3.client('ec2', region_name=aws_region)
print aws_region
spot_instance_histories = ec2.describe_spot_price_history(
InstanceTypes=[instance_type],
StartTime = datetime.now() - timedelta(days=7),
EndTime = datetime.now()
)
price_array = []
for history_item in spot_instance_histories['SpotPriceHistory']:
price_array.append(float(history_item['SpotPrice']))
avg = (sum(price_array)/len(price_array))
#print_summary
global_price_list[avg] = aws_region
global_price_list = collections.OrderedDict(sorted(global_price_list.items()))
return global_price_list
return global_price_list
result = get_spot_price_history_all_regions('t2.medium', 'Windows (Amazon VPC)')
pprint.pprint(result)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment