How to query aws cli results
-
To query the results retreived from aws cli commands, aws supports jmespath
-
Pre-reqs:
- Understanding JSON
-
To Query:
- JMESPath: Helps in writing expressions to filter and search the json data
-
How to do that
-
Write a query to get all the regions
- Basic query and store output
aws ec2 describe-regions > regions.json- lets get the first regions name
aws ec2 describe-regions --query "Regions[0].RegionName"- lets get all the region names
aws ec2 describe-regions --query "Regions[*].RegionName"- lets get the last region name
aws ec2 describe-regions --query "Regions[-1].RegionName"- other fun stuff
aws ec2 describe-regions --query "Regions[::2].RegionName" aws ec2 describe-regions --query "Regions[::-1].RegionName" -
Other jmes examples
- Execute
aws ec2 describe-instances > ec2info.json - Get image ids of all instances
aws ec2 describe-instances --query "Reservations[*].Instances[0].ImageId"- Get Image id, Instance Id, Private Ip , Key Pair for all instances
aws ec2 describe-instances --query "Reservations[*].Instances[0].{amiid: ImageId, instanceid: InstanceId, keypair: KeyName, PrivateIp: PrivateIpAddress}"- Write a query to describe all the images owned by amazon
aws ec2 describe-images --owner amazon > images.json- Find count of number of images in region us-west-2 owned by amazon
aws ec2 describe-images --owner amazon --query "length(Images[])"- Find count of number of images in region ap-south-1 owned by amazon
aws ec2 describe-images --owner amazon --query "length(Images[])" --region ap-south-1- Write an aws cli query to find out images whose name starts with Windows and owner is microsoft
aws ec2 describe-images --owner microsoft --query "Images[?starts_with(Name, 'Windows')]"- Show filtered information for above query
aws ec2 describe-images --owner microsoft --query "Images[?starts_with(Name, 'Windows')].{amiid: ImageId, hypervisor: Hypervisor, virttype: VirtualizationType }"- Now try to write query to images whose name starts with aws
aws ec2 describe-images --query "Images[?Name != `null`] |[?starts_with(Name, 'aws')].{amiid: ImageId, hypervisor: Hypervisor, virttype: VirtualizationType }" - Execute
