我正在编写代码来遍历所有可用实例并为它们创建一个 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_id 列表,然后获取每个 ami_id 的状态?如果是这样,那么当我读取图像的状态时图像仍然处于挂起状态怎么办?如何确定镜像创建最终是否失败?
谢谢。
最佳答案
如果我没理解错的话,您想启动 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
关于Python boto ec2 - 我如何等到图像创建或失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26175050/