使用适用于python的AWS开发工具包访问AWS Elastic Load Balancer

时间:2017-10-21 03:56:15

标签: python-3.x amazon-web-services boto3

所以我使用boto3连接到AWS并管理Elastic Load Balancer(ELB)背后的Web服务器实例。问题是我无法访问我的ELB,而我可以访问其他现有资源,例如Instances。例如,当我运行这段代码时,我可以看到我正在运行的实例:

ec2 = boto3.resource('ec2', region_name="us-east-2")
instances = ec2.instances.all()
for instance in instances.all():
     print(instance)

输出如下:

ec2.Instance(id='i-xxxxxxxxxxxxxxxxx')
ec2.Instance(id='i-xxxxxxxxxxxxxxxxx')
ec2.Instance(id='i-xxxxxxxxxxxxxxxxx')

通过运行以下代码,我希望看到我的ELB:

elb = boto3.client('elb', region_name="us-east-2")
elbs = elb.describe_load_balancers()
print(elbs)

但输出是这样的:

{'LoadBalancerDescriptions': [], 'ResponseMetadata': {'RequestId': 'f813b2d3-b5e8-11e7-8b34-73b6f3d263a2', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'f813b2d3-b5e8-11e7-8b34-73b6f3d263a2','content-type': 'text/xml', 'content-length': '335', 'date': 'Fri, 20 Oct 2017 22:49:45 GMT'}, 'RetryAttempts': 0}}

正如您在输出中看到的那样,LoadBalancerDescriptions中没有ELB,而根据API refference,它应该包含现有ELB的名称。但我的控制台中有一个ELB可以正常工作:

The existing ELB in my AWS console

我不知道为什么python代码不起作用。

1 个答案:

答案 0 :(得分:2)

将ElasticLoadBalancingV2类用于较新的负载均衡器:ALB和NLB。示例:client = boto3.client(' elbv2')

将ElasticLoadBalancing类用于" Classic Load Balancer"。

ElasticLoadBalancingv2