AWS CLI: List Resources Across All Regions

neotam Avatar

AWS CLI: List Resources Across All Regions
Posted on :

Tags :

AWS uses the regions and avaiability zones. Where region is the seperate geographic location while avaiability zone is the logical building block of AWS region. Multiple availabiliy zones make up the AWS region. Availability zone is the distinct location in the AWS region that is isolated to be protected from failures in other avilability zones to be used as fault tolerant.

List all Regions using AWS CLI

aws ec2 describe-regions --output table

output

---------------------------------------------------------------------------------
|                                DescribeRegions                                |
+-------------------------------------------------------------------------------+
||                                   Regions                                   ||
|+-----------------------------------+-----------------------+-----------------+|
||             Endpoint              |      OptInStatus      |   RegionName    ||
|+-----------------------------------+-----------------------+-----------------+|
||  ec2.ap-south-1.amazonaws.com     |  opt-in-not-required  |  ap-south-1     ||
||  ec2.eu-north-1.amazonaws.com     |  opt-in-not-required  |  eu-north-1     ||
||  ec2.eu-west-3.amazonaws.com      |  opt-in-not-required  |  eu-west-3      ||
||  ec2.eu-west-2.amazonaws.com      |  opt-in-not-required  |  eu-west-2      ||
||  ec2.eu-west-1.amazonaws.com      |  opt-in-not-required  |  eu-west-1      ||
||  ec2.ap-northeast-3.amazonaws.com |  opt-in-not-required  |  ap-northeast-3 ||
||  ec2.ap-northeast-2.amazonaws.com |  opt-in-not-required  |  ap-northeast-2 ||
||  ec2.ap-northeast-1.amazonaws.com |  opt-in-not-required  |  ap-northeast-1 ||
||  ec2.ca-central-1.amazonaws.com   |  opt-in-not-required  |  ca-central-1   ||
||  ec2.sa-east-1.amazonaws.com      |  opt-in-not-required  |  sa-east-1      ||
||  ec2.ap-southeast-1.amazonaws.com |  opt-in-not-required  |  ap-southeast-1 ||
||  ec2.ap-southeast-2.amazonaws.com |  opt-in-not-required  |  ap-southeast-2 ||
||  ec2.eu-central-1.amazonaws.com   |  opt-in-not-required  |  eu-central-1   ||
||  ec2.us-east-1.amazonaws.com      |  opt-in-not-required  |  us-east-1      ||
||  ec2.us-east-2.amazonaws.com      |  opt-in-not-required  |  us-east-2      ||
||  ec2.us-west-1.amazonaws.com      |  opt-in-not-required  |  us-west-1      ||
||  ec2.us-west-2.amazonaws.com      |  opt-in-not-required  |  us-west-2      ||
|+-----------------------------------+-----------------------+-----------------+|

List only region names using –filter flag

aws ec2 describe-regions --query 'Regions[*].RegionName'

Output

[
    "ap-south-1",
    "eu-north-1",
    "eu-west-3",
    "eu-west-2",
    "eu-west-1",
    "ap-northeast-3",
    "ap-northeast-2",
    "ap-northeast-1",
    "ca-central-1",
    "sa-east-1",
    "ap-southeast-1",
    "ap-southeast-2",
    "eu-central-1",
    "us-east-1",
    "us-east-2",
    "us-west-1",
    "us-west-2"
]

To check the resources in particular region

 aws resourcegroupstaggingapi get-resources --region ap-south-1

Simple Shell script to list resources from all regions

First set the variable regions whish is an array based on the regions list as follows

regions=(ap-south-1 eu-north-1 eu-west-3 eu-west-2 eu-west-1 ap-northeast-3 ap-northeast-2 ap-northeast-1 ca-central-1 sa-east-1 ap-southeast-1 ap-southeast-2 eu-central-1 us-east-1 us-east-2 us-west-1 us-west-2)
regions=(ap-south-1 eu-north-1 eu-west-3 eu-west-2 eu-west-1 ap-northeast-3 ap-northeast-2 ap-northeast-1 ca-central-1 sa-east-1 ap-southeast-1 ap-southeast-2 eu-central-1 us-east-1 us-east-2 us-west-1 us-west-2)
for i in $regions; do  aws resourcegroupstaggingapi get-resources --region $i; done

Eloborated Shell Script

regions=(ap-south-1 eu-north-1 eu-west-3 eu-west-2 eu-west-1 ap-northeast-3 ap-northeast-2 ap-northeast-1 ca-central-1 sa-east-1 ap-southeast-1 ap-southeast-2 eu-central-1 us-east-1 us-east-2 us-west-1 us-west-2)

for i in $regions
 do  
   echo "Region --- $i";
   aws resourcegroupstaggingapi get-resources --region $i; 
done

To list resources in tabular form

for i in $regions
 do
   echo "Region --- $i";
   aws resourcegroupstaggingapi get-resources --output table --region $i;
done

List all instances across all regions

for i in $regions
 do
   echo "Region --- $i"; 
   aws ec2 describe-instances --region $i;
   echo ; 
done

List number of instances running in each region

for i in $regions
 do
   echo "Region --- $i"; 
   aws ec2 describe-instances --query 'length(Reservations[*])'  --region $i;
   echo ;  
done

List All Elastic IPs by region

 aws ec2 describe-addresses  --query 'Addresses[*].{IP:PublicIp,region:NetworkBorderGroup}' --output table

Bonus

To list Instance IDs

aws ec2 describe-instances  --query "Reservations[].Instances[].[InstanceId]"

List instances with Tag “Name”

aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId, Tags[?Key==Name].Value[0]]'

Combine with filters to limits the output

aws ec2 describe-instances --filters "Name=tag-key,Values=Name"

To describe the instances with instance type and key used in a table

aws ec2 describe-instances  --query "Reservations[*].Instances[].[InstanceId, InstanceType, KeyName]" --output table

Leave a Reply

Your email address will not be published. Required fields are marked *