查询 elbv2 的 AWS cli 时使用通配符

tps*_*idt 2 amazon-web-services aws-cli aws-elb

我正在尝试获取某些 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"
]
Run Code Online (Sandbox Code Playgroud)

就像是

aws elbv2 describe-load-balancers --query "LoadBalancers[?DNSName=='services-green-*']"
Run Code Online (Sandbox Code Playgroud)

不起作用,因为不接受通配符,并且无法使用像 at ec2 命令这样的过滤器。

如何在不使用 jq 的情况下获取 ARN?

Ers*_*soy 5

你可以试试这个;

aws elbv2 describe-load-balancers --query 'LoadBalancers[?contains(DNSName, `services-green-*`) == `true`][DNSName]'
Run Code Online (Sandbox Code Playgroud)

[DNSName]如果您想要完整的回复,您可以删除最后一个。或者替换DNSNameLoadBalancerArn;

aws elbv2 describe-load-balancers --query 'LoadBalancers[?contains(DNSName, `services-green-*`) == `true`][LoadBalancerArn]'
Run Code Online (Sandbox Code Playgroud)

就像 一样,如果您不想要完整的通配符但知道它是如何开始的,contains您可以尝试。starts_with