Created
July 16, 2018 15:23
-
-
Save Sam-Martin/b20177ef0881a649b14b5db49b905656 to your computer and use it in GitHub Desktop.
Rough Price of EC2 Spot Instances Globally
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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