2016-08-11 89 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已準備就緒,可以使用。