有没有办法自动确定给定 EC2 实例的负载均衡器(如果有)是什么?即让它询问“我的 LB 是谁,它的服务 IP 是什么?”。我当时想的是实例元数据服务但实例“前面”的 LB 似乎没有列在那里。
这样做的原因是我想要将 ELB 地址(或 DNS 名称)设置为 Chef 节点属性,以便需要知道此外部 IP 的客户端服务自动查询。
答案1
您可以使用API获取信息。
- 从 EC2 实例元数据中获取当前 EC2 实例 ID。
- 使用 elasticloadbalancing:DescribeLoadBalancers 获取负载均衡器列表。
- 遍历响应中的每个负载均衡器。对于每个负载均衡器,遍历实例列表以查找您的实例 ID。
注意事项 1:EC2 实例可以注册零个负载均衡器、一个负载均衡器,甚至两个或多个负载均衡器。
注意事项#2:弹性负载均衡器的外部 IP 地址很可能会随着时间而改变。