2015-08-12 3 views
3

J'essaie d'obtenir l'adresse IP publique de toutes les instances en cours d'exécution. J'utilise boto3 et python version 2.7.6.obtenir ip publique des instances dans AWS

>>> instances = ec2.instances.filter(
    ...  Filters=[{'Name': 'instance-state-name', 'Values': ['running']}]) 
>>> for instance in instances: 
...  print(instance.public_ip_address,instance.platform,instance.public_dns_name); 

Il liste toutes les instances ainsi que les instances n'ayant pas d'adresse IP publique qui leur est affectée.

(None, None, '') 

Est-il possible de filtrer les cas qui ne sont pas une adresse IP publique tout en peuplant cas en utilisant ec2.instances.filter?

Répondre

1
filter(lambda x:x[0] is not None, instances) 
+0

Est-il possible de filtrer ip lors de l'obtention de la liste des instances à l'aide ec2.instances.filter? – user3351750

+0

@ user3351750 Quel est le problème avec 'instances = filter (lambda x: x [0] n'est pas None, ec2.instances.filter (... Filters = [{'Name': 'instance-state-name', 'Valeurs' : ['en cours d'exécution']}])) '? –

+0

J'ai utilisé 'result = filter (lambda x: x.public_ip_address n'est pas None, instances);' Je suis simplement curieux de savoir si cela est possible dans la méthode 'ec2.instances.filter'. Je suis nouveau à la fois python et boto – user3351750