2015-10-11 64 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