使用JQ解析AWS JSON



我正在尝试解析AWS CLI的JSON输出。我要找的是下面有特定标签的安全组名称。两个有效的命令是

$aws ec2 describe-security-groups | jq  -r '.SecurityGroups[].GroupName'
default
mysqlsg
apachesg
default

然后我运行

$ aws ec2 describe-security-groups | jq  -r '.SecurityGroups[].Tags[]|select(.Key == "Service")'
{
"Key": "Service",
"Value": "default"
}
{
"Key": "Service",
"Value": "MySQL"
}
{
"Key": "Service",
"Value": "Apache"
}
{
"Key": "Service",
"Value": "default"
}

我希望每个小组的下面都有服务标签,所以我尝试了一下,但没有成功。

$ aws ec2 describe-security-groups | jq  -r '.SecurityGroups[].GroupName,.SecurityGroups[].Tags[]|select(.Key == "Service")'
jq: error (at <stdin>:225): Cannot index string with string "Key"

您可以使用aws-cli查询参数来完成此操作,请尝试以下操作,它应该可以工作。

aws ec2 describe-security-groups --query 'SecurityGroups[].{Tags:Tags[?Key==`Name`].Value|[0],GroupName:GroupName}'

输出

{
"Tags": "demo",
"GroupName": "demo"
}

最新更新