2011-07-12 19 views
2

特定の地域のelbの詳細をヨーロッパに渡し、ELBに関連するインスタンスを取得できます。問題はそれらのインスタンスのパブリックDNSを取得できないことです。私は何をすることは、私がBOTO Pythonを使用してAWSでインスタンスのパブリックDNSを取得する方法

for i in lb.instances: 
    i.public_dns_name 

をしようとすると、これらのインスタンス

のpublic_dns_nameを取得する方法を

conn = regions[3].connect(aws_access_key_id= access, aws_secret_access_key = secret_key) 
loadbalancers = conn.get_all_load_balancers() 
for lb in loadbalancers: 
print lb.instances 

ではAttributeError: 'InstanceInfo' オブジェクトが

答えて

9

何の属性 'public_dns_name' がありませんLoadBalancerクラスの "instances"属性には、インスタンスに関する小さな情報しか含まれていません。インスタンス全体のオブジェクトではありません。完全なインスタンスオブジェクトを取得するには、使用可能なinstanceIdを使用して詳細情報を照会する必要があります。このコードスニペットでは、必要な呼び出しを使用してコードを拡張します。

#Create connection to ec2, credentials stored in environment 
ec2_conn = connect_ec2() 

conn = regions[3].connect(aws_access_key_id= access, aws_secret_access_key = secret_key) 
loadbalancers = conn.get_all_load_balancers() 
for lb in loadbalancers: 
    for i in lb.instances: 
     #Here, 'i' is an InstanceInfo object, not a full Instance 
     instance_id = i.id 

     #Query based on the instance_id we've got 
     #This function actually gives reservations, not instances 
     reservations = ec2_conn.get_all_instances(instance_ids=[instance_id]) 
     #pull out our single instance 
     instance = reservations[0].instances[0] 

     #Now we've got the full instance and we can get parameters from here 
     print(instance.public_dns_name) 
関連する問題