我正在编写一个代码来迭代所有可用的实例并为它们创建一个AMI,如下所示:
for reservation in reservations:
......
ami_id = ec2_conn.create_image(instance.id, ami_name, description=ami_desc, no_reboot=True)
但是,在继续创建下一个图像之前,我该如何等待图像创建?因为我需要跟踪每个创建的ami的状态.
我知道我可以使用以下方法检索状态:
image_status = get_image(ami_id).state
那么,我是否遍历创建的ami_ids列表,然后为每个列表获取状态?如果是这样,那么当我读取图像的状态时,如果图像仍处于未决状态怎么办?如何确定图像创建最终是否失败?
谢谢.
最佳答案 如果我理解正确,您希望启动create_image调用,然后等待服务器端操作完成后再继续.为此,您必须定期轮询EC2服务,直到图像的状态可用(意味着它成功)或失败(意味着它失败).代码看起来像这样:
import time
...
image_id = ec2_conn.create_image(instance.id, ...)
image = ec2_conn.get_all_images(image_ids=[image_id])[0]
while image.state == 'pending':
time.sleep(5)
image.update()
if image.state == 'available':
# success, do something here
else:
# handle failure here