2017-03-17 1 views

Répondre

0

C'est ma solution ce que je l'ai eu à travailler. Merci John.

elbList = boto3.client('elb') 
ec2 = boto3.resource('ec2') 

bals = elbList.describe_load_balancers() 
for elb in bals['LoadBalancerDescriptions']: 
    print 'ELB DNS Name : ' + elb['DNSName'] 
    for ec2Id in elb['Instances']: 
     running_instances = \ 
      ec2.instances.filter(Filters=[{'Name': 'instance-state-name' 
           , 'Values': ['running']}, 
           {'Name': 'instance-id', 
           'Values': [ec2Id['InstanceId']]}]) 
     for instance in running_instances: 
      print("    Instance : " + instance.public_dns_name); 
2

classique Load Balancer

Le boto3 describe_load_balancers() fonctions retourne une liste d'instances:

{ 
    'LoadBalancerDescriptions': [ 
     { 
      'LoadBalancerName': 'string', 
      'DNSName': 'string', 
      .... 
      'Instances': [ 
       { 
        'InstanceId': 'string' 
       }, 
      ], 
      .... 
     }, 
    ], 
    'NextMarker': 'string' 
} 

La section Instances renvoie les ID des instances pour l'équilibrage de charge.

charge d'application d'équilibrage (ELBv2)

Celui-ci est plus difficile. L'équilibreur de charge d'application a plusieurs groupes cibles . Les ports sur les instances sont enregistrés dans un groupe cible.

La seule commande qui semble à la liste des cas dans un groupe cible est describe_target_health(), qui renvoie le exemple et le port (parce qu'une instance peut servir plusieurs cibles):

{ 
    'TargetHealthDescriptions': [ 
     { 
      'Target': { 
       'Id': 'i-0f76fade', 
       'Port': 80, 
      }, 
      'TargetHealth': { 
       'Description': 'Given target group is not configured to receive traffic from ELB', 
       'Reason': 'Target.NotInUse', 
       'State': 'unused', 
      }, 
     }, 
     { 
      'HealthCheckPort': '80', 
      'Target': { 
       'Id': 'i-0f76fade', 
       'Port': 80, 
      }, 
      'TargetHealth': { 
       'State': 'healthy', 
      }, 
     }, 
    ], 
    'ResponseMetadata': { 
     '...': '...', 
    }, 
} 
+1

Salut @ Sam, si cela ou d'une réponse a a résolu votre question s'il vous plaît envisager [acceptant] (http://meta.stackexchange.com/q/5234/179419) en cliquant sur la coche. Ceci indique à la communauté plus large que vous avez trouvé une solution et donne une certaine réputation à la fois le répondeur et vous-même. Il n'y a aucune obligation de le faire. –

0

Ceci est un script simple pour trouver la liste de l'instance attachée à un ELB, comme entrée, vous devrez peut-être fournir le nom ELB

#!/usr/bin/python 

import boto3 
import sys 
import string 


elb_name = raw_input("What is ELB name? :: ") 

print ("\n") 
print ("THE LIST OF INSTANCES ATTACHED TO THIS ELB IS \n") 
elbList = boto3.client('elb') 
ec2 = boto3.resource('ec2') 

bals = elbList.describe_load_balancers() 
for elb in bals['LoadBalancerDescriptions']: 

    set2 = elb['LoadBalancerName'] 
    if elb_name == set2 : 
     inst = elb['Instances'] 
     ct = sys.getrefcount(inst) 
     count = ct 
     for x in range(count): 
      iv = elb['Instances'][x] 
      id = str(iv.values()) 
      id = string.replace(id, "'", "") 
      print id.strip('[]')