elbv2 的 AWS cli 查询通配符
Wildcards on query for AWS cli for elbv2
我正在尝试获取某些我只知道 DNS 名称前缀的 LoadBalancer 的 ARN。
例如,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-*']"
无法正常工作,因为不接受通配符并且无法使用 ec2 commands 之类的过滤器。
如何在不退回到使用 jq 的情况下获取 ARN?
你可以试试这个;
aws elbv2 describe-load-balancers --query 'LoadBalancers[?contains(DNSName, `services-green-*`) == `true`][DNSName]'
如果您想要完整的回复,您可以删除最后一个 [DNSName]
。或者将 DNSName
替换为 LoadBalancerArn
;
aws elbv2 describe-load-balancers --query 'LoadBalancers[?contains(DNSName, `services-green-*`) == `true`][LoadBalancerArn]'
就像 contains
一样,如果您不想要完整的通配符但知道它是如何开始的,您可以尝试 starts_with
。
我正在尝试获取某些我只知道 DNS 名称前缀的 LoadBalancer 的 ARN。
例如,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-*']"
无法正常工作,因为不接受通配符并且无法使用 ec2 commands 之类的过滤器。
如何在不退回到使用 jq 的情况下获取 ARN?
你可以试试这个;
aws elbv2 describe-load-balancers --query 'LoadBalancers[?contains(DNSName, `services-green-*`) == `true`][DNSName]'
如果您想要完整的回复,您可以删除最后一个 [DNSName]
。或者将 DNSName
替换为 LoadBalancerArn
;
aws elbv2 describe-load-balancers --query 'LoadBalancers[?contains(DNSName, `services-green-*`) == `true`][LoadBalancerArn]'
就像 contains
一样,如果您不想要完整的通配符但知道它是如何开始的,您可以尝试 starts_with
。