所以我使用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可以正常工作:
我不知道为什么python代码不起作用。
答案 0 :(得分:2)
将ElasticLoadBalancingV2类用于较新的负载均衡器:ALB和NLB。示例:client = boto3.client(' elbv2')
将ElasticLoadBalancing类用于" Classic Load Balancer"。