[Cialug] JSON Querying
Adam Shannon
adamkshannon at gmail.com
Thu Jun 14 14:06:53 UTC 2018
Does this work for you?
$ jq .Reservations[].Instances[] /tmp/aws.json | jq 'select(
.BlockDeviceMappings | length <= 2)'
{
"Monitoring": {
"State": "enabled"
},
"PublicDnsName": "ec2-xx-xx-x-xx.name-1.amazonaws.com",
"State": {
"Code": 16,
"Name": "running"
},
"LaunchTime": "2018-06-13T12:00:20.000Z",
"PublicIpAddress": "xx.xx.x.xx",
"PrivateIpAddress": "xx.xx.x.xx",
"VpcId": "vpc-rjf271d9",
"CpuOptions": {
"CoreCount": 2,
"ThreadsPerCore": 2
},
"StateTransitionReason": "",
"InstanceId": "i-0fcf111d64bc97558",
"ImageId": "ami-60812a1d",
"PrivateDnsName": "ip-xx-xx-x-xx.ec2.internal",
"SubnetId": "subnet-xxxxxxxxxx",
"InstanceType": "m4.xlarge",
"SourceDestCheck": true,
"Hypervisor": "xen",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"Status": "attached",
"DeleteOnTermination": true,
"VolumeId": "vol-xxxxxxxxxxx",
"AttachTime": "2018-04-09T19:41:10.000Z"
}
}
],
"Architecture": "x86_64",
"RootDeviceType": "ebs",
"RootDeviceName": "/dev/sda1",
"VirtualizationType": "hvm",
"AmiLaunchIndex": 1
}
On Thu, Jun 14, 2018 at 8:34 AM, Todd Walton <tdwalton at gmail.com> wrote:
> I'm having trouble figuring out this JSON query using jq. Maybe someone
> here can help?
>
> I do a 'aws ec2 describe-instances' and I get back a JSON document (pasted
> in below, truncated for clarity). So now I want to use jq to return the
> InstanceId of any instance with less than 2 BlockDeviceMappings. You'll
> notice that the first instance, i-0f7771a48c88ec8fc, has 3 block device
> mappings: /dev/sda1, /dev/xvdcp, and /dev/xvdcc, while the second instance,
> i-0fcf111d64bc97558, only has 1, /dev/sda1. I want to pass all that through
> jq such that I return the InstanceId of the second one.
>
> Any suggestions? I'd take a non-jq suggestion if it were possible.
>
> References:
> https://stedolan.github.io/jq/
> https://jqplay.org/
>
> The doc:
>
> {
> "Reservations": [
> {
> "Instances": [
> {
> "Monitoring": {
> "State": "enabled"
> },
> "PublicDnsName": "ec2-xx-xx-x-xx.name-1.amazonaws.com",
> "State": {
> "Code": 16,
> "Name": "running"
> },
> "LaunchTime": "2018-06-13T12:00:20.000Z",
> "PublicIpAddress": "xx.xx.x.xx",
> "PrivateIpAddress": "xx.xx.x.xx",
> "VpcId": "vpc-rjf271d9",
> "CpuOptions": {
> "CoreCount": 2,
> "ThreadsPerCore": 2
> },
> "StateTransitionReason": "",
> "InstanceId": "i-0f7771a48c88ec8fc",
> "ImageId": "ami-60812a1d",
> "PrivateDnsName": "ip-xx-xx-x-xx.ec2.internal",
> "SubnetId": "subnet-xxxxxxxxxx",
> "InstanceType": "m4.xlarge",
> "SourceDestCheck": true,
> "Hypervisor": "xen",
> "BlockDeviceMappings": [
> {
> "DeviceName": "/dev/sda1",
> "Ebs": {
> "Status": "attached",
> "DeleteOnTermination": true,
> "VolumeId": "vol-xxxxxxxxxxx",
> "AttachTime": "2018-04-09T19:41:10.000Z"
> }
> },
> {
> "DeviceName": "/dev/xvdcp",
> "Ebs": {
> "Status": "attached",
> "DeleteOnTermination": false,
> "VolumeId": "vol-xxxxxxxxxxx",
> "AttachTime": "2018-05-17T12:03:23.000Z"
> }
> },
> {
> "DeviceName": "/dev/xvdcc",
> "Ebs": {
> "Status": "attached",
> "DeleteOnTermination": false,
> "VolumeId": "vol-xxxxxxxxxxx",
> "AttachTime": "2018-05-18T19:34:56.000Z"
> }
> }
> ],
> "Architecture": "x86_64",
> "RootDeviceType": "ebs",
> "RootDeviceName": "/dev/sda1",
> "VirtualizationType": "hvm",
> "AmiLaunchIndex": 0
> },
> {
> "Monitoring": {
> "State": "enabled"
> },
> "PublicDnsName": "ec2-xx-xx-x-xx.name-1.amazonaws.com",
> "State": {
> "Code": 16,
> "Name": "running"
> },
> "LaunchTime": "2018-06-13T12:00:20.000Z",
> "PublicIpAddress": "xx.xx.x.xx",
> "PrivateIpAddress": "xx.xx.x.xx",
> "VpcId": "vpc-rjf271d9",
> "CpuOptions": {
> "CoreCount": 2,
> "ThreadsPerCore": 2
> },
> "StateTransitionReason": "",
> "InstanceId": "i-0fcf111d64bc97558",
> "ImageId": "ami-60812a1d",
> "PrivateDnsName": "ip-xx-xx-x-xx.ec2.internal",
> "SubnetId": "subnet-xxxxxxxxxx",
> "InstanceType": "m4.xlarge",
> "SourceDestCheck": true,
> "Hypervisor": "xen",
> "BlockDeviceMappings": [
> {
> "DeviceName": "/dev/sda1",
> "Ebs": {
> "Status": "attached",
> "DeleteOnTermination": true,
> "VolumeId": "vol-xxxxxxxxxxx",
> "AttachTime": "2018-04-09T19:41:10.000Z"
> }
> }
> ],
> "Architecture": "x86_64",
> "RootDeviceType": "ebs",
> "RootDeviceName": "/dev/sda1",
> "VirtualizationType": "hvm",
> "AmiLaunchIndex": 1
> }
> ]
> }
> ]
> }
>
> --
> Todd
> _______________________________________________
> Cialug mailing list
> Cialug at cialug.org
> http://cialug.org/mailman/listinfo/cialug
>
More information about the Cialug
mailing list