GraphGists

Introduction

Amazon Web Services global infrastructure is steadily expanding and now serves thousands of customers in over 190 countries. Certain services are only available in some regions and compute prices vary across the globe. Wouldn’t it be nice if you could slice and dice through the entire AWS domain of services, data centres and prices all in one spot to optimise your AWS bill? Enter the AWS Global Infrastructure Graph!

At the time of writing (January 2014) the AWS global infrastructure graph consists of 5 continents with 10 regions, and 21 availability zones offering 32 services.

Disclaimer

AWS consumers beware! The prices and services listed in the graph are correct as of January 21st 2014. Please refer to the AWS price calculator for the latest prices and service offerings per region.

Setup

The Domain

Domain Model
Figure 1. The Domain Model

Use Cases

What is the cheapest compute optomised EC2 instance anywhere in North America?

MATCH (region)-[:IS_LOCATED_IN]->(Continent{name:'North America'})
WITH region AS usa_regions
MATCH (usa_regions)-[:CHARGES]->(price)-[:FOR_INSTANCE]->(EC2InstanceType{family:'Compute optimized'})
RETURN usa_regions.name AS `AWS Region`, min(price.cost_per_hour) AS `Hourly Cost`, EC2InstanceType.name AS `Instance Type`
ORDER BY min(price.cost_per_hour) LIMIT 1;

Which AWS region has the most availability zones?

MATCH (region)-[:HAS_ISOLATED]->(AvailabilityZone)
RETURN region.name AS `AWS Region`, count(AvailabilityZone) AS `Count of Availability Zones`
ORDER BY count(AvailabilityZone) DESC LIMIT 1

What are the AWS regions that offer the service AWS CloudTrail?

MATCH (region)-[:OFFERS_SERVICE]->(Service{name:'AWS CloudTrail'})
RETURN region.name AS `AWS Region`

Which EC2 instance type has the most available memory?

MATCH (ec2:EC2InstanceType)
RETURN ec2.memory AS `Memory GiB`, ec2.name AS `EC2`
ORDER BY ec2.memory DESC
LIMIT 1

Created by Aidan Casey twitter: @AIDANJCASEY