1
我正在开发一个AMI创建自动化项目。 要求:1,创建一个AMI 2.等待AMI创建 3.突破我们不想重新启动,如果AMI创建失败的循环或成功 4.重复所有实例break if while whthin if if条件
程序我们创建AMI时的实例。
问题:当我添加break语句到if条件时,脚本没有终止内循环。有人可以帮我修复代码。
#!/usr/bin/env python
import sys
import boto
import boto.ec2
import datetime
import time
list_1 = ['instance1','instance2']
conn = boto.ec2.connect_to_region('us-west-1',aws_access_key_id = '<access_key>',aws_secret_access_key = '<secret_key>')
def create_img(a, b):
try:
print "Starting AMI creation for : %s" % inst.tags['Name']
img_id = conn.create_image(a, b, description='backup', no_reboot=True, dry_run=False)
except boto.exception.BotoServerError, e:
print e.error_message
return(img_id)
reservations = conn.get_all_instances()
for res in reservations:
for inst in res.instances:
if 'Name' in inst.tags and inst.tags['Name'] in list_1:
print "%s (%s) [%s]" % (inst.tags['Name'], inst.id, inst.state)
name = inst.tags['Name'] + '-' + datetime.datetime.now().strftime("%Y%m%d%H%M")
ami_id = create_img(inst.id, name)
img = conn.get_all_images(filters={'image_id' : ami_id})[0]
if img.state == 'failed':
print "AMI creation failed for instance: %s" % inst.tags['Name']
elif img.state == 'pending':
while True:
if img.state == 'failed':
print "AMI creation failed for instance: %s" % inst.tags['Name']
break
elif img.state == 'available':
print "AMI creation completed for instance: %s" % inst.tags['Name']
break
else:
time.sleep(60)
elif img.state == 'available':
print "AMI creation completed for instance: %s" % inst.tags['Name']
else:
print "Couldn't find the AMI"
什么是打印? – stark
我看到AMI创建,但循环没有终止,并没有去下一个实例。 输出 - > instance1(i-xxxxx)[运行] 开始创建AMI:instance1 – user6136315