2017-10-21 44 views
1

J'utilise donc boto3 pour me connecter à AWS et gérer mes instances de serveur Web qui se trouvent derrière un Elastic Load Balancer (ELB). Le problème est que je n'ai pas accès à mon ELB, c'est pendant que j'ai accès aux autres ressources existantes comme des instances. Par exemple, alors que je suis en ce morceau de code, je peux voir mes instances en cours d'exécution:Accès à AWS Elastic Load Balancer avec AWS SDK pour python

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

La sortie est comme ceci:

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

En exécutant le code ci-dessous, je pense voir mes ELB:

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

Mais la sortie est comme ceci:

{'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}} 

Comme vous pouvez le voir dans la sortie, il n'y a pas d'ELB dans LoadBalancerDescriptions, alors que selon le API refference, il devrait contenir le nom des ELB existants. Mais j'ai un ELB dans ma console qui fonctionne très bien:

The existing ELB in my AWS console

Je ne sais pas pourquoi le code python ne fonctionne pas.

Répondre

2

Utilisez la classe ElasticLoadBalancingV2 pour les nouveaux équilibreurs de charge: ALB et NLB. Exemple: client = boto3.client ('elbv2')

Utilisez la classe ElasticLoadBalancing pour "Classic Load Balancer".

ElasticLoadBalancingv2