我正在尝试获取某个LoadBalancer的ARN,我只知道DNS名称的前缀。
例如,aws elbv2 describe-load-balancers --query 'LoadBalancers[].DNSName[]'
将打印我:
[
"services-green-********.elb.eu-central-1.amazonaws.com",
"services-blue-********.elb.eu-central-1.amazonaws.com"
]
类似的东西
aws elbv2 describe-load-balancers --query "LoadBalancers[?DNSName=='services-green-*']"
不起作用,因为不接受通配符,并且不可能使用at-ec2命令之类的筛选器。
如何在不重新使用jq的情况下获得ARN?
您可以试试这个;
aws elbv2 describe-load-balancers --query 'LoadBalancers[?contains(DNSName, `services-green-*`) == `true`][DNSName]'
如果需要完整响应,可以删除最后一个[DNSName]
。或者用LoadBalancerArn
替换为DNSName
;
aws elbv2 describe-load-balancers --query 'LoadBalancers[?contains(DNSName, `services-green-*`) == `true`][LoadBalancerArn]'
就像contains
一样,如果你不想要完整的通配符,但知道它是如何开始的,你可以尝试starts_with
。