使用Java SDK从AWS中的快照创建AMI

时间:2016-08-11 21:25:03

标签: java amazon-web-services amazon-ec2

我想从我目前拥有的快照创建一个AMI。我正在使用ImportImageRequest来完成任务。以下是我的一段代码。

    ImportImageResult iir = ec2.importImage(new ImportImageRequest().withDiskContainers(new ImageDiskContainer().withSnapshotId("snap-3b4pd121")));
    System.out.println(iir.toString());
    System.out.println(iir.getImportTaskId());
    System.out.println(iir.getImageId());

输出结果为

{ImportTaskId: import-ami-ffwthmw7,SnapshotDetails: [{DiskImageSize: 0.0,}],Progress: 2,StatusMessage: pending,Status: active}
import-ami-ffwthmw7
null

这意味着图像Id为空。我无法推断出原因。我也试过describeImage()来获取更多信息,但没有找到任何信息。但它适用于其他图像。

1 个答案:

答案 0 :(得分:0)

导入图片需要一段时间。对importImage的调用返回得非常快,但执行工作的后台任务仍在运行。

致电importImage后,请致电describeImportImageTasks以获取后台任务的状态。找到您感兴趣的ImportImageTask并查看getStatusgetProgress,了解事情的进展情况。继续致电describeImportImageTasks,直到您看到导入已完成。

完成后,将填写有关结果的所有详细信息。

当AWS Java SDK文档(例如,javadoc)严重不完整时(就像在这种情况下一样),我发现查看相应命令行API调用的文档很有用。对于example

  

使用describe-import-image-tasks命令返回状态   导入任务。

     

状态值包括以下内容:

     

活动 - 导入任务正在进行中。

     

删除 - 导入任务正在取消。

     

已删除 - 导入任务已取消。

     

已完成 - 导入任务已完成且AMI已准备就绪。