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