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

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

avatar