Python boto ec2 – 我如何等待图像创建或失败

我正在编写一个代码来迭代所有可用的实例并为它们创建一个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
点赞