查找具有特定实例的所有AWS负载均衡器

时间:2019-06-25 16:40:04

标签: amazon-web-services aws-cli aws-elb

我想获取所有具有特定实例的AWS负载均衡器的名称。

我可以使用以下命令列出ELB中的实例

aws elb describe-load-balancers --query "LoadBalancerDescriptions[*].{ID:LoadBalancerName,InstanceId:Instances[*].InstanceId}[*]. {ELB:ID,InstanceId:InstanceId[*]}" --output=json

样本输出:

[
{
    "ELB": "my_name",
    "InstanceId": [
        "instance-id-A",
        "instance-id-B",
    ]
},
{
    "ELB": "my_name2",
    "InstanceId": [
        "instance-id-B",
        "instance-id-C"
    ]
},
{
    "ELB": "my_name3",
    "InstanceId": [
        "instance-id-A",
        "instance-id-C"
    ]
}

]

如何过滤此输出以仅返回实例ID为A的ELB名称?

2 个答案:

答案 0 :(得分:2)

contains命令将为您提供所需的内容

aws elb describe-load-balancers --query "LoadBalancerDescriptions[*].{ID:LoadBalancerName,InstanceId:Instances[*].InstanceId}[?contains(to_string(@),'instance-id-A')]"

提供输出:

[
    {
        "ID": "lb_name",
        "InstanceId": [
            "i-1234567890"
        ]
    }
]

参考

http://jmespath.org/specification.html#contains

答案 1 :(得分:2)

我认为更好用的另一种方法是使用jq进行过滤:

aws elb describe-load-balancers | jq -r '.LoadBalancerDescriptions[] | select (.Instances[].InstanceId == "instance-id-A") | .LoadBalancerName'

输出:

SampleLBName1
SampleLBName2