我正在试图找到一个负载均衡器,它有一个具有某些值的Name标记。
aws elb describe-load-balancers --query 'LoadBalancerDescriptions[*].LoadBalancerName'我正在迭代结果并运行:
aws elb describe-tags \
--load-balancer-names some-load-balancer \
--query 'TagDescriptions[?Tags[?Key==`Name`].Value == `my-desired-name-value`]'结果始终是空的,尽管如下:
aws elb describe-tags \
--load-balancer-names some-load-balancer \
--query 'TagDescriptions[].Tags[?Key==`Name`].Value'返回my-desired-name-value。我想得到标签的整个对象,只使用JMESPath,我不能在这里使用jq。
期望产出:
{
"TagDescriptions": [
{
"LoadBalancerName": "some-load-balancer",
"Tags": [
{
"Key": "SomeTag",
"Value": "SomeValue"
},
{
"Key": "Name",
"Value": "my-desired-name-value"
}
]
}
]
}我的JMESPath查询有什么问题?
发布于 2020-08-05 13:39:47
您正在尝试使用--query来执行--filter的角色,不幸的是,describe-tags不支持--filter选项。
--query选项允许您选择在响应中返回哪些字段。当可用时,--filter允许您选择要返回的资源。我们将更详细地描述这里
您可以使用jq来执行过滤器的功能。我强烈推荐它,因为AWS没有为所有的CLI命令实现--filter选项。
对于您的例子,请尝试如下:
aws elb describe-tags --load-balancer-names some-load-balancer \
| jq -r '.TagDescriptions[] |select (.Tags[].Value=="my-desired-name-value")'更复杂的是对标记键和值进行筛选:
aws elb describe-tags --load-balancer-names some-load-balancer \
| jq -r '.TagDescriptions[] | . as $i \
| (select ($i.Tags[].Value=="my-desired-name-value")) and (select ($i.Tags[].Key=="Name")) \
| $i'{
"LoadBalancerName": "some-load-balancer",
"Tags": [
{
"Key": "Type",
"Value": "classic"
},
{
"Key": "Name",
"Value": "my-desired-name-value"
}
]
}发布于 2021-03-23 12:08:14
aws elbv2描述-标签-资源-arns\ jq,-r '.TagDescriptions[] .(选择($ $i .Value.Value test(“.-05-myteam.-.”)和(选择($i.Tags[].Key==“Name”)\x $i.ResourceArn‘
https://serverfault.com/questions/1028956
复制相似问题