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

标签 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)

但是我如何等到图像创建后再继续创建下一个图像?因为我需要跟踪创建的每个 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/

相关文章:

python - NLTK MLE 模型澄清三元组及更多

amazon-web-services - 停止 EC2 实例时如何保留数据

python - 如何使用 boto 从作业中提取 FreeText 答案

java - 使用 AWS ApiGateway 签名的 URL

python - Matplotlib:未对齐的颜色条刻度线?

amazon-web-services - 将文件从本地传输和更新到 AWS Ubuntu

amazon-ec2 - 如何在 Spark 中打开 Commoncrawl.org WARC.GZ S3 数据

python - 使用 python 从 JSON 文件中删除一些特定对象,然后将文件推送到 Elasticsearch Index

python - 通过仅指定索引键从具有范围键的 DynamoDB 表中检索项目

python - 如何获取对象的字段?