Skip to content
List hosts across multiple accounts and regions
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Quickly and easily list hosts across multiple accounts and all regions. Saves you from having to go searching through accounts if you're looking for a specific instance.

The application is multi-threaded and should return results in 5 to 6 seconds depending on how many accounts and regions you have. To get better performance comment out regions that you aren't actively using.


usage: ec2list [-h] [-i INSTANCES] [-v] [-a] [-f FILTER]

optional arguments:
  -h, --help            show this help message and exit
  -i INSTANCES, --instances INSTANCES
                        Comma-separated list of instances to filter results.
  -v, --verbose         Print all host metadata.
  -a, --all             List all hosts, even those that aren't running.
  -f FILTER, --filter FILTER
                        key value filters to pass directly to command. Eg:


You must have a $HOME/.aws/config file setup with the proper credentials.

An example profile:

[profile production]

[profile staging]

You can test that the different profiles are active by running the aws cli tool

aws ec2 describe-instances --profile=production
aws ec2 describe-instances --profile=staging

Listing all instances in a succinct manner.

The columns when run this way will always be predictable (unlike -v). Useful if you're using awk or other things.

$ ./list
i-7e15d971 stephen_test_001 m3.large production
i-7e15d971 stephen_test_002 m3.large staging

List instances that are also stopped

By default only running instances will be shown. Use the -a or --all flag to show all instances, even those that are stopped.

$ ./list -a

Be verbose (prints all available instance info)

Verbose prints everything returned by ec2. The return values are unordered.

./list -v
  Monitoring: {"State": "disabled"}
  RootDeviceType: ebs
  State: {"Code": 16, "Name": "running"}
  EbsOptimized: False
  Monitoring: {"State": "disabled"}
  RootDeviceType: ebs
  State: {"Code": 16, "Name": "running"}
  EbsOptimized: False

Print only information for a select number of instances

To easily filter instances by instance id, they can be passed as a comma-separated list with the -i or --instances flag.

./list -i i-bba5d6e6,i-cad1b0c2,i-afa406f2

Print only instances that are an m1.small

Note that the filters arg allows you to pass filters down directory to the underlying aws ec2 command. See the ec2 api for information on the types of filtering you can do.

$ ./list -f Name=instance-type,Values=m1.small
You can’t perform that action at this time.