用于通过公共DNS连接到amazon ec2实例的脚本

时间:2015-10-11 19:26:50

标签: amazon-ec2 dns

我需要编写一个可以通过公共dns启动aws实例的脚本, 我可以通过使用带有我的实例名称的过滤器来启动实例,但是如果我尝试使用{tag:'公共DNS':my_publicdns}进行过滤,则会收到错误消息。甚至可以通过公共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!')

1 个答案:

答案 0 :(得分:0)

你不能这样做。

EC2实例在启动之前没有分配公共DNS地址。 IPv4地址是稀缺商品,因此AWS不会永久分配它们。如果停止并启动实例,则可能会获得不同的IPv4地址。由于AWS公有DNS名称基于IPv4地址,因此实例在停止然后启动时不一定保留相同的公用DNS名称。

我建议您为实例分配一个有意义的标记,以便您通过使用公有DNS名称在功能上完成您要完成的任务。