用于Elastic Load Balancer的AWS PHP SDK

时间:2016-02-17 05:43:47

标签: php amazon-web-services

我是AWS新手, 需要AWS PHP SDK代码来获取附加到ELB的实例数。

2 个答案:

答案 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);