6

除了轮询之外,我如何知道长时间运行的 Amazon EC2 操作何时完成?例如,使用CreateImageAPI 函数可能需要几分钟时间。

现在我正在这样做:

// 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 论坛

4

2 回答 2

3

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

于 2012-04-03T21:02:42.327 回答
0

James Hunter Ross在 AWS 论坛上回答了这个问题,如下所示:

轮询就是了。也就是说,既然你已经启动了一个 C# 程序,为什么不让它产生一个轮询进程,按照你的意愿通知你呢?在某些方面,您似乎快完成了。

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

我无法为他找到 StackOverflow 个人资料,但如果他出现,我将对其进行编辑以表扬他。

于 2012-04-05T22:06:11.503 回答