Site icon 时鹏亮的Blog

AWS API获取负载均衡器中当前服务的实例IP

请知悉:本文最近一次更新为 6年 前,文中内容可能已经过时。

AWS负载均衡里的实例是动态变化的,随着压力会出现销毁,扩容的情况,所以实例IP也是不固定的,每次要看都需要从后台看,比较麻烦,经浩哥指点,发现AWS提供了API相关功能,可以直接查询负载均衡的服务实例信息,总结如下:

1.升级pip

pip install --upgrade pip

2.安装awscli(其他都是其依赖的)

pip install argparse cheetah oauth PrettyTable pyserial awscli

如果提示pip找不到了,执行:

ln /usr/local/bin/pip /usr/bin/pip

后再重试安装指令

3.

aws configure

配置API相关信息,需要输入相关的密钥信息以及服务所在位置

4.获取负载均衡器相关信息:

aws elb describe-load-balancers --load-balancer-name elb名称

5.根据返回信息,得到Instances中的InstanceId就是实例Id,这个可以通过:

aws ec2 describe-instances --instance-ids "Id1 Id2 Id3..."

得到实例信息。

6.Reservations中的Instances的PublicIpAddress就是外网IP。

PHP来实现的话就是这样的:

<?php
$c = shell_exec("aws elb describe-load-balancers --load-balancer-name ebl名称 2>&1");
$c = json_decode($c,true);
$c = $c['LoadBalancerDescriptions'][0]["Instances"];
$ips = "";
foreach($c as $ip){
$ips.='"'.$ip["InstanceId"].'" ';
}
$c = shell_exec("aws ec2 describe-instances --instance-ids {$ips} 2>&1");
$c = json_decode($c,true);
$c = $c['Reservations'];
foreach($c as $ip){
echo $ip["Instances"][0]['PublicIpAddress']."n";
}

相关参考链接:
https://stackoverflow.com/questions/3726313/method-of-finding-instances-attached-to-elb utm_medium=organic#answer-4011060
https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《AWS API获取负载均衡器中当前服务的实例IP》相关的博文:

Exit mobile version