2015-10-11 102 views
1

我需要編寫一個腳本,可以通過其公共dns啓動aws實例, 我可以使用具有實例名稱的過濾器啓動實例,但如果我嘗試使用{tag:'Public DNS':my_publicdns}進行過濾,則會出現錯誤。公共DNS能夠過濾嗎?用於連接到亞馬遜ec2實例公共dns的腳本

my_publicdns = 'ec2-1-2-3-4.eu-west-1.compute.amazonaws.com' 
myinstance = 'GA_brian_burroughs' 

def start_instance(): 

      try: 
      inst = conn.get_all_instances(filters={'tag:Name': myinstance})[0].instances[0] 
      except Exception: 
      print('Error:', myinstance, 'not found!') 

      if not inst.state == 'running': 
      print('Starting', myinstance) 
      inst.start() 
      else: 
      print(myinstance, 'already running or starting up!') 
+0

它是否具有彈性IP地址,或只是啓動實例時分配的IP地址? –

回答

0

你不能這樣做。

EC2實例在啓動之前沒有分配公有DNS地址。 IPv4地址是稀缺商品,所以AWS不會永久分配它們。如果您停止並啓動一個實例,您可能會獲得不同的IPv4地址。由於AWS公共DNS名稱基於IPv4地址,因此實例在停止然後啓動時不一定保留相同的公共DNS名稱。

我會建議,而不是分配一個有意義的標記到您的實例,使您可以在功能上完成您試圖通過使用公共DNS名稱完成。

+0

謝謝我完成了,我不需要通過它的dns啓動它,只需通過它的dns連接到它,這樣我就可以自動安裝一個nginx web服務器,現在完成賦值規則只需要做一些額外的東西額外的標記,如監視cpu統計信息並創建一個新的實例,如果讀數超過某個閾值。我新來的python是否有一個監控類或一些我可以用來執行此操作的導入? – user3308338