2016-08-11 67 views
0

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

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()以获取更多信息,但没有找到任何东西。但它适用于其他图像。

回答

0

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

在您致电importImage后,请致电describeImportImageTasks以获取后台任务的状态。找到你感兴趣的ImportImageTask,看看getStatusgetProgress,看看事情进展如何。继续呼叫describeImportImageTasks,直到您看到导入已完成。

一旦完成后,所有的关于结果的细节将在充满。

当AWS的Java SDK文档(例如,javadoc的)是远远不完整的(因为它是在这种情况下),我发现查看相应命令行API调用的文档很有用。对于example

使用描述导入图像任务命令返回 进口任务的状态。

状态值包括以下内容:

active - 导入任务正在进行中。

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

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

已完成 - 导入任务已完成且AMI已准备就绪,可以使用。