适用于PHP的AWS开发工具包 - 未显示负载均衡器

时间:2017-08-03 19:29:20

标签: php amazon-web-services aws-sdk amazon-elb elastic-load-balancer

我正在使用AWS SDK for PHP来查询负载均衡器以查找所有健康实例。我尝试使用describeInstanceHealth方法从我的ELB中获取所有健康实例,但却发现它没有使用我提供的名称的活动负载均衡器。

然后我决定使用describeLoadBalancers查看它在内部使用的名称,但却发现函数根本没有返回负载均衡器。我有3个有效的负载平衡器,当我输入它时使用。

以下是我的代码的相关部分:

<?php
require 'aws/aws-autoloader.php';

use Aws\ElasticLoadBalancing\ElasticLoadBalancingClient;
...
$client = ElasticLoadBalancingClient::factory([
    'key'    => env('ACCESS_KEY'),
    'secret' => env('SECRET'),
    'region' => env('REGION')
]);

$result = $client->describeLoadBalancers();
var_dump($result);

我得到的输出如下:

object(Guzzle\Service\Resource\Model)#106 (2) { 
    ["structure":protected]=> NULL ["data":protected]=> array(2) {
        ["LoadBalancerDescriptions"]=> array(0) { } 
        ["ResponseMetadata"]=> array(1) { 
            ["RequestId"]=> string(36) "e6e7b0a4-7880-11e7-bb72-995ab0ed2a69" 
        }
    }
}

请注意,LoadBalancerDescriptions键的数组应为空,其中应包含所有活动负载均衡器的说明。

我的猜测是IAM角色没有正确配置,我的用户无法看到负载均衡器,但我不知道如何将我正在使用的用户/访问密钥附加到负载平衡器。

如何让负载均衡器对我正在进行的API调用可见?

我使用的是PHP 5.6.31。

2 个答案:

答案 0 :(得分:0)

事实证明,ELB支持两种类型的负载均衡器:Classic和Application。 AWS开发工具包V1不支持应用程序负载平衡器。我不得不升级SDK并使用describeTargetHealth来获取负载均衡器中每个实例的实例ID。

答案 1 :(得分:0)

使用ELBv2 API和describeTargetHealth方法计算出来。