When working with EC2 instances across multiple regions I’ve found it’s near impossible to get a good overview of what is running where. This can be especially annoying when you are automatically launching a number of short lived instances.

To prevent me having to go through 9 different web pages to see what I currently have running I found it easier to just use the API and list active instances from the CLI.

Install dependencies:

$ gem install aws-sdk pmap

/usr/local/bin/aws-list:

#!/usr/bin/ruby

require 'aws-sdk'
require 'pmap'

def ec2(region = 'us-east-1')
	ec2 = AWS::EC2.new(
		access_key_id: ENV['AWS_ACCESS_KEY'],
		secret_access_key: ENV['AWS_SECRET_KEY'],
		region: region
	)
	ec2
end

def list_instances
	instances = []
	ec2.regions.peach do |region|
		ec2.regions[region.name].instances.peach do |instance|
			next if instance.status == :terminated
			instances << instance
		end
	end
	instances
end

list_instances.peach do |instance|
	puts "#{instance.id}\t\t#{instance.availability_zone}\t\t#{instance.status}\t\t#{instance.ip_address}\n"
end

Listing instances:

$ export AWS_ACCESS_KEY="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
$ export AWS_SECRET_KEY="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
$ aws-list
i-16b78754  eu-west-1a          running     54.77.218.113
i-0025e1e6  eu-west-1a          running     54.76.129.127
i-3926e2df  eu-west-1a          running     54.154.52.146
i-4924e0af  eu-west-1a          running     54.154.52.77
i-c424e022  eu-west-1a          running     54.72.131.127
i-0c25e1ea  eu-west-1a          running     54.154.51.140
i-9c25e17a  eu-west-1a          running     54.154.49.204
i-4b24e0ad  eu-west-1a          running     54.77.225.135
i-33e929f2  eu-central-1b       running     54.93.164.233
i-c324e025  eu-west-1a          running     54.76.98.165
i-3f26e2d9  eu-west-1a          running     54.154.47.126
i-8027e366  eu-west-1a          running     54.154.20.140
i-0d25e1eb  eu-west-1a          running     54.77.100.132
i-d718edd9  us-west-2c          running     54.149.35.63
i-0c2028e6  us-east-1a          running     54.164.193.104
i-5b95e54e  sa-east-1a          running     54.94.165.7
i-2dad38de  ap-northeast-1a     running     54.65.157.129
i-625a80af  ap-southeast-1a     running     54.169.195.201
i-a06e006f  ap-southeast-2a     running     54.66.184.34
i-2dbce5e5  us-west-1a          running     54.67.67.18