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