我是AWS新手, 需要AWS PHP SDK代码来获取附加到ELB的实例数。
答案 0 :(得分:0)
亚马逊网络服务(AWS)在文档方面确实非常出色。您可以在AWS SDK for PHP landing page找到很多有用的信息;具体来说,您需要查看API reference。
在API参考中,您将看到所有常见嫌疑人的文档:EC2,S3,甚至ELB。
ELB客户端支持许多方法。但你感兴趣的是DescribeLoadBalancers。您传入负载均衡器的名称,如果您传递多个负载均衡器名称,它会回显它的描述 - 或多个。描述格式显示在文档中:
[
'LoadBalancerDescriptions' => [
[
// ...
'Instances' => [
[
'InstanceId' => '<string>',
],
// ...
],
// ...
],
// ...
],
'NextMarker' => '<string>',
]
您正在寻找的是负载均衡器描述中的 Instances 数组。这是Instance类型的结构数组。最后,使用该结构数组,您可以获得您正在寻找的 InstanceId 。
答案 1 :(得分:0)
对不起我的疑惑问题,虽然我能够在你的帮助下找到答案。 :)以下使它工作 -
$ credentials = new Credentials('accesskey','secretkey');
$client = ElasticLoadBalancingClient::factory(array(
'credentials' => $credentials,
'region' => 'us-west-2'
));
$model = $client->describeLoadBalancers();
$ELBdata = array();
for($i=0; $i<sizeof($model); $i++)
{
$output = array();
$output['ELBName'] = $model['LoadBalancerDescriptions'][$i]['LoadBalancerName'];
$output['DNSName'] = $model['LoadBalancerDescriptions'][$i]['DNSName'];
$output['instanceCount'] = count($model['LoadBalancerDescriptions'][$i]['Instances']);
array_push($ELBdata,$output);
}
$ELB["status"] = true;
$ELB["data"] = $ELBdata;
echo json_encode($ELB);