2012-04-03 61 views
5

除了輪詢,如何判斷長時間運行的Amazon EC2操作何時完成?例如,使用CreateImage API函數可能需要幾分鐘的時間。我如何知道Amazon EC2操作何時完成?

現在我這樣做:

// MAKE THE API CALL 
var createRequest = new CreateImageRequest().WithInstanceId("i-123456").WithName("MyNewAMI"); 
var createResponse = myAmazonEC2Client.CreateImage(createRequest); 
var imageId = createResponse.CreateImageResult.ImageId; 

// ICKY POLLING CODE 
bool isImaging = true; 
while (isImaging) 
{ 
    var describeRequest = new DescribeImagesRequest().WithImageId(imageId); 
    var describeResponse = myAmazonEC2Client.DescribeImages(describeRequest); 
    isImaging = describeResponse.DescribeImagesResult.Image.Single().ImageState == "pending"; 
    Thread.Sleep(10000); // sleep for 10 seconds 
} 

// CreateImage IS COMPLETE; MOVE ON WITH OUR WORK 

我討厭這樣。在致電CreateImage之後,我想通過某種方式通知它已完成並繼續前進。這可能嗎?在本例中,我使用的是AWS .NET SDK,但我沒有專門尋找C#解決方案。

UPDATE:跨發佈到AWS Forums

回答

3

在亞馬遜的一些事件可以被配置爲發送通知到一個SNS主題。例如,當使用自動擴展時,您可以在服務器啓動並終止時發出通知。據我所知,沒有辦法爲其他服務(如CreateImage)觸發這些通知。我過去一直在尋找這種功能,但沒有運氣。我試圖創建一個腳本,以特定的順序啓動服務器。因爲我無法找到註冊這些事件的任何方式,所以我最終只是投票調查他們的API。

0

James Hunter Ross回答了這個問題over on the AWS Forums如下:

輪詢是它。這就是說,既然你有一個C#程序開始,爲什麼不讓它產生一個輪詢過程,通知你,如你所願?看來你在某些方面已經差不多完成了。

(當然,如果這樣的功能是內置在AWS將是很好的。)

我沒能找到一個StackOverflow的輪廓他,但如果他出現我會編輯這個給他信貸。

相關問題