Skip to content

Instantly share code, notes, and snippets.

@mortalius
Last active November 2, 2022 13:49
Show Gist options
  • Save mortalius/88b11bf022728fa0f86df7b8bf48638f to your computer and use it in GitHub Desktop.
Save mortalius/88b11bf022728fa0f86df7b8bf48638f to your computer and use it in GitHub Desktop.
AWS JMESPath examples
Get Reservations that have more than 1 instance records and show ReservationId and InstanceIds
aws ec2 describe-instances --query 'Reservations[?Instances | length(@) > `1` ].[ReservationId,Instances[].[InstanceId]]'
Same, but shows total number of instances per Reservation
aws ec2 describe-instances \
--query 'Reservations[?Instances | length(@) == `3`].[ReservationId,Instances[] | length(@)]'
Get Name tag
aws ec2 describe-instances --instance-ids=$_INSTANCE_ID \
--query 'Reservations[0].Instances[0].Tags[?Key==`Name`].Value'
Find entry by Tag value from a Tags structure that is nested.
aws fsx describe-file-systems \
--query "FileSystems[?Tags[?Key == 'Name']|[?Value == 'MyInstance']].FileSystemId"
Find LCs by date
aws autoscaling describe-launch-configurations \
--query 'LaunchConfigurations[?CreatedTime <= `2018-01-01`].[LaunchConfigurationName]'
Hell
aws ec2 describe-images \
--query 'Images[?Name!=`null`]|[? Tags[? Value==`2017-11-01` && Key==`expire_orig`]]|[?!not_null(Tags[?Key == `CI-Tool`].Value)]|[?CreationDate <= `2017-11-01`].[CreationDate,ImageId,Name]' --output text
Find images and output sorted
aws ec2 describe-images --owners 679593333241 --filters Name=name,Values='OpenVPN Access Server 2.5.2*' \
--query "reverse(sort_by(Images, &CreationDate))[0].ImageId" --output text
  
aws ec2 describe-images --owners amazon \
--query 'reverse(sort_by(Images[?Name != `null`] | [?contains(Name, `amazon-ecs-optimized`) == `true`], &CreationDate))[:1].ImageId'
Just list instance IDs with names and IPs
aws ec2 describe-instances \
--query "Reservations[].Instances[] | [].[Tags[?Key == 'Name'].Value[]|[0],InstanceId,PrivateIpAddress]" \
--output table
List Lambdas with VPC configured
aws lambda list-functions --query 'Functions[?not_null(VpcConfig.VpcId)].{Name:FunctionName, Vpc:VpcConfig.VpcId, Sg:join(` `, VpcConfig.SecurityGroupIds)}' --output table

aws cloudtrail lookup-events \
    --lookup-attributes AttributeKey=EventName,AttributeValue=ModifyNetworkInterfaceAttribute \
    --query 'Events[] | [?contains(CloudTrailEvent, `'$ENI'`) == `true` && contains(CloudTrailEvent, `groupId`) == `true` && contains(CloudTrailEvent, `errorMessage`) == `false`]')"

Get EBS performance for instance types

aws ec2 describe-instance-types \
--query 'InstanceTypes[].{InstanceType:InstanceType,"MaxBandwidth(Mb/s)":EbsInfo.EbsOptimizedInfo.MaximumBandwidthInMbps,MaxIOPS:EbsInfo.EbsOptimizedInfo.MaximumIops,"MaxThroughput(MB/s)":EbsInfo.EbsOptimizedInfo.MaximumThroughputInMBps}' \
--filters Name=ebs-info.ebs-optimized-support,Values=default --output=table

------------------------------------------------------------------------------------------
|                                  DescribeInstanceTypes                                 |
+--------------+---------------+----------------------+----------+-----------------------+
| EBSOptimized | InstanceType  | MaxBandwidth(Mb/s)   | MaxIOPS  |  MaxThroughput(MB/s)  |
+--------------+---------------+----------------------+----------+-----------------------+
|  supported   |  m2.4xlarge   |  1000                |  8000    |  125.0                |
...

http://opensourceconnections.com/blog/2015/07/27/advanced-aws-cli-jmespath-query/
https://www.onica.com/blog/using-aws-cli-to-find-untagged-instances/
https://ripon-banik.medium.com/top-10-examples-of-aws-cli-query-e717524dc346

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment