我需要编写一个可以通过公共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!')
答案 0 :(得分:0)
你不能这样做。
EC2实例在启动之前没有分配公共DNS地址。 IPv4地址是稀缺商品,因此AWS不会永久分配它们。如果停止并启动实例,则可能会获得不同的IPv4地址。由于AWS公有DNS名称基于IPv4地址,因此实例在停止然后启动时不一定保留相同的公用DNS名称。
我建议您为实例分配一个有意义的标记,以便您通过使用公有DNS名称在功能上完成您要完成的任务。