如何通过AWS CLI获取全类型负载均衡器及其关联私有/公有IP?
获取AWS所有类型负载均衡器及其关联IP的CLI方案
AWS的四种负载均衡器(应用ALB、网络NLB、经典CLB、网关GLB)分属不同API体系,对应的CLI查询入口也有区别。下面是针对每种类型的查询命令,以及整合结果的实用方法:
分类型查询命令
应用/网络/网关负载均衡器(ALB/NLB/GLB)
这三种属于Elastic Load Balancing v2体系,可通过同一条命令直接获取名称、类型、DNS及关联IP:
aws elbv2 describe-load-balancers --query 'LoadBalancers[*].[LoadBalancerName, Type, DNSName, AvailabilityZones[*].LoadBalancerAddresses[*].PrivateIpv4Address, AvailabilityZones[*].LoadBalancerAddresses[*].PublicIpv4Address]' --output table
输出会清晰列出每个LB的名称、类型、DNS地址,以及各可用区下的私有IP和公网IP列表。
经典负载均衡器(CLB)
CLB属于v1体系,其IP信息不会直接在负载均衡器描述接口中返回,需分两步查询:
- 获取CLB基础信息:
aws elb describe-load-balancers --query 'LoadBalancerDescriptions[*].[LoadBalancerName, "classic", DNSName, Scheme]' --output table
- 通过EC2网络接口关联IP(CLB的网卡描述字段会包含LB名称):
aws ec2 describe-network-interfaces --filters "Name=description,Values=ELB *" --query 'NetworkInterfaces[*].[Description, PrivateIpAddress, Association.PublicIp]' --output table
可通过描述字段中的CLB名称,将两部分结果对应起来。
整合所有结果(用jq格式化)
如果需要一次性输出统一格式的所有LB信息,可结合AWS CLI和jq工具处理:
# 输出ALB/NLB/GLB的标准化信息 aws elbv2 describe-load-balancers --query 'LoadBalancers[*]' | jq -r '.[] | [ .LoadBalancerName, .Type, .DNSName, ([.AvailabilityZones[].LoadBalancerAddresses[]?.PrivateIpv4Address] | join(", ")), ([.AvailabilityZones[].LoadBalancerAddresses[]?.PublicIpv4Address] | join(", ")) ] | @tsv' # 输出CLB的标准化信息(IP字段可结合网络接口数据补充) aws elb describe-load-balancers --query 'LoadBalancerDescriptions[*]' | jq -r '.[] | [ .LoadBalancerName, "classic", .DNSName, "", "" ] | @tsv'
若需自动关联CLB的IP,可进一步用jq将网络接口数据匹配到对应CLB记录中。
关键注意点
- CLB的IP为动态分配,AWS不会在CLB描述接口中直接返回,必须通过关联的EC2网络接口查询。
- 网关负载均衡器(GLB)多部署于私有网络场景,可能仅存在私有IP,无公网IP。
- 执行命令前需确保IAM身份拥有
elasticloadbalancing:DescribeLoadBalancers和ec2:DescribeNetworkInterfaces权限。
内容的提问来源于stack exchange,提问作者Tate_87
相关产品推荐
相关产品推荐

