Reputation: 43
I am writing a script to create AWS volumes automatically. I am trying to filter out the value for volumeId using echo and jq
[root@ip-172-41-23-8 ~]# aws ec2 describe-volumes --filters Name=status,Values=available Name=availability-zone,Values=us-east-1d Name=tag:Name,Values=*USEPROD*|jq ".VolumeId"
null
[root@ip-172-41-23-8 ~]# echo $value | jq
{
"Volumes": [
{
"AvailabilityZone": "us-east-1d",
"Attachments": [],
"Tags": [
{
"Value": "Dev",
"Key": "Env"
},
{
"Value": "Shell",
"Key": "Deployment"
},
{
"Value": "cnx30au - Kafka-Data-Node - /dev/sdg - /abc/data/sda",
"Key": "Name"
}
],
"Encrypted": true,
"VolumeType": "gp2",
"VolumeId": "vol-095ac513f0f049ba5",
"State": "available",
"KmsKeyId": "arn:aws:kms:us-east-1:709721360603:key/xvfgfr-dsdsd-dsdsds-a00c-dsdsdsd34dsd",
"SnapshotId": "",
"Iops": 100,
"CreateTime": "2019-04-08T21:52:31.473Z",
"Size": 10
}
]
}
json="aws ec2 describe-volumes --filters Name=status,Values=available Name=availability-zone,Values=us-east-1d Name=tag:Name,Values=*USEPROD*"
echo "Executing: ${json}"
value=`${json}`
valueid=`echo ${value}|jq '.VolumeId'`
[root@ip-172-31-87-1 ~]# echo $valueid
null
When i filter for available volumes i only want the output to be as follows
vol-095ac513f0f049ba5
Upvotes: 0
Views: 244
Reputation: 94
VolumeId is twice nested, you need to identify that with your query
valueid=`echo ${value} | jq '.[]|.[]|.VolumeId'`
Upvotes: 2