我如何知道Amazon EC2操作何时完成?

时间:2012-04-03 20:19:43

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

除轮询外,如何确定长时间运行的Amazon EC2操作何时完成?例如,使用CreateImage API函数可能需要几分钟的时间。

现在我这样做:

// 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#解决方案。

更新:交叉发布到AWS Forums

2 个答案:

答案 0 :(得分:3)

亚马逊的某些活动可以配置为向SNS主题发送通知。例如,使用自动缩放时,您可以在启动和终止服务器时收到通知。据我所知,无法为其他服务(如CreateImage)触发这些通知。我过去一直在寻找这种类型的功能而没有运气。我试图创建一个脚本,以特定的顺序启动服务器。我最后只是轮询他们的API,因为我找不到任何方式来注册这些事件。

答案 1 :(得分:0)

James Hunter Ross回答了这个问题over on the AWS Forums如下:

  

轮询就是这样。也就是说,既然你已经启动了C#程序,为什么不让它产生一个通知你的轮询过程呢?在某些方面,你似乎已经差不多完成了。

     

(当然,如果在AWS上内置了这样的功能,那就太好了。)

我无法为他找到StackOverflow个人资料,但如果他出现,我会编辑这个以给予他信任。