2016-08-25 29 views
-1

下面是一些簡單的代碼。什麼應該拉關鍵:姓名標籤。但是當我添加第二個標籤時,它似乎改變了順序,所以0並不總是名稱?ec2標籤號碼是否改變?

instances = ec2.instances.filter(Filters=[{'Name':'instance-state-name','Values':['running']}]) 
    for instance in instances: 
     for tag in instance.tags: 
      if 'Name'in tag['Key']: 
       name = tag['Value'] 
    print "Pulling all instance info..." 
    for instance in instances: 
     print(instance.id, instance.instance_type,instance.private_ip_address, instance.tags[0].get("Value")) 
+2

你是什麼意思的'標籤號碼?如果你想要你的實例的唯一標識符,使用'instance id'。它保持不變,並且每個實例 –

回答

1

是的。 instance.tags是一個列表,您的標記可以出現在列表中的任何位置。如果你想獲得'姓名',你必須循環訪問列表。列表中的每個元素都是一個字典。在獲取值之前檢查鍵是否爲「名稱」。

這聽起來很複雜,但代碼非常簡單。你不能盲目做instance.tags[0].get("Value")

+0

獨一無二。所以0只會有一個標籤。得到它了。任何想法這將看起來像是正確的? –

+0

與此類似的東西。看到我的答案:http://stackoverflow.com/questions/34751794/displaying-ec2-instance-name-using-boto-3 – helloV

+0

非常好,謝謝。 –