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

dru*_*ist 3 python amazon-ec2 boto

我正在编写一个代码来迭代所有可用的实例并为它们创建一个AMI,如下所示:

for reservation in reservations:
    ......
    ami_id = ec2_conn.create_image(instance.id, ami_name, description=ami_desc, no_reboot=True)
Run Code Online (Sandbox Code Playgroud)

但是,在继续创建下一个图像之前,我该如何等待图像创建?因为我需要跟踪每个创建的ami的状态.

我知道我可以使用以下方法检索状态:

image_status = get_image(ami_id).state
Run Code Online (Sandbox Code Playgroud)

那么,我是否遍历创建的ami_ids列表,然后为每个列表获取状态?如果是这样,那么当我读取图像的状态时,如果图像仍处于未决状态怎么办?如何确定图像创建最终是否失败?

谢谢.

gar*_*aat 6

如果我理解正确,您希望启动create_image呼叫,然后等待服务器端操作完成后再继续.为此,您必须定期轮询EC2服务,直到图像的状态为available(意味着它成功)或failed(意味着它失败).代码看起来像这样:

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
Run Code Online (Sandbox Code Playgroud)