【问题标题】:How do I know when an Amazon EC2 operation is complete?我如何知道 Amazon EC2 操作何时完成?
【发布时间】:2012-04-06 06:06:11
【问题描述】:

除了轮询,我如何知道长时间运行的 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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      James Hunter Rossover on the AWS Forums这个问题的回答如下:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-16
        • 1970-01-01
        • 2019-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-17
        相关资源
        最近更新 更多