我正在尝试使用jq获取AWS EC2实例的Name
标记的值。
aws ec2 describe-instances | jq -r '.Reservations[].Instances[] | .Tags[] | select (.Key == "Name")'
但是我收到此错误:
jq: error: Name/0 is not defined at <top-level>, line 1:
.Reservations[].Instances[] | .Tags[] | select (.Key == Name)
jq: 1 compile error
这是我要处理的json:
{
"Reservations": [{
"Instances": [{
"AmiLaunchIndex": 0,
"ImageId": "ami-00c3c949f325a4149",
"InstanceId": "i-0c17052ee1c7113e5",
"Architecture": "x86_64",
"Tags": [{
"Key": "Name",
"Value": "bastion001"
},
{
"Key": "environment",
"Value": "stg-us-east"
}
]
}]
}]
}
如何从EC2实例中获取Name
标签的值?
答案 0 :(得分:3)
您不需要诸如jq
之类的额外工具来查询输出。 AWS CLI具有JMESPath
内置功能可以帮助您做到这一点。
aws ec2 describe-instances --query 'Reservations[*].Instances[*].Tags[?Key == `Name`].Value'
答案 1 :(得分:1)
在Q中显示的jq命令行表达式和错误消息之间不匹配。我建议至少在整理完所有内容之前,将jq程序放入文件中,然后使用-f命令行选项调用jq。