AWS cli列出未使用的elb

Ant*_*ntu 3 amazon-web-services amazon-elb aws-cli

我几乎是AWS新手.我试图列出未附加到任何实例的负载余额.我正在尝试使用aws cli描述负载均衡器但是无法获得过滤掉elbs的选项.

请提供一些如何实现这一目标的建议.

Vor*_*ung 7

假设您使用合适的密钥设置了aws cli,这个长行的shell应该列出ELB并附加一个实例计数.如果它显示为零则没有附加实例

for i in `aws elb describe-load-balancers|sed -ne 's/"LoadBalancerName": "\(.*\)",/\1/gp'`; do echo -n "$i "; aws elb describe-load-balancers --load-balancer-name $i|grep -c InstanceId;done
Run Code Online (Sandbox Code Playgroud)

或者,这是一个boto3 python程序

import boto3
client=boto3.client('elb')
bals=client.describe_load_balancers()
for elb in bals['LoadBalancerDescriptions']:
  count=len(elb['Instances'])
  print "%s %d" % ( elb['LoadBalancerName'], count)
Run Code Online (Sandbox Code Playgroud)

  • 这是在 AWSCLI 上使用 ``--query`` 选项的版本。它显示负载均衡器名称和实例列表。``aws elb describe-load-balancers --query "LoadBalancerDescriptions[].[Instances,LoadBalancerName]"`` (2认同)

ken*_*kas 7

jq我看到了上面的答案,并想使用而不是Bashor来制作答案Boto
以下示例jq与 AWS cli 一起使用。

这个例子解决了OP最初想要做的事情——

列出没有附加实例的 ELB:

aws elb describe-load-balancers --output json |jq -r '.LoadBalancerDescriptions[] | select(.Instances==[]) | . as $l | [$l.LoadBalancerName] | @sh'
Run Code Online (Sandbox Code Playgroud)

输出

'blah10-admin'
'elk-elb-nova'
'cj-web-elb'

这个例子符合接受的答案——

打印 ELB 名称和附加实例的数量:

aws elb describe-load-balancers --output json | jq -r '.LoadBalancerDescriptions[] | . as $l | (.Instances | length)  as $i | [$l.LoadBalancerName] + [$i] | @sh'
Run Code Online (Sandbox Code Playgroud)

输出

'blah10-admin' 0
'elk-lb-cim-0' 1
'demo-pod-01-es' 1
'elk-elb-nova' 0