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.NETSDKを使用していますが、特にC#ソリューションを探しているわけではありません。

更新:AWSフォーラムへのクロスポスト

4

2 に答える 2

3

アマゾンの一部のイベントは、SNSトピックに通知を送信するように設定できます。たとえば、自動スケーリングを使用する場合、サーバーが起動および終了したときに通知を受け取ることができます。私の知る限り、CreateImageなどの他のサービスに対してこれらの通知をトリガーする方法はありません。私は過去にこのタイプの機能を探していましたが、運がありませんでした。特定の順序でサーバーを起動するスクリプトを作成するためにそれを実行しようとしていました。それらのイベントに登録する方法が見つからなかったため、APIをポーリングするだけで終わりました。

于 2012-04-03T21:02:42.327 に答える
0

James Hunter Rossは、AWSフォーラムでこの質問に次のように回答しました。

ポーリングはそれです。そうは言っても、C#プログラムを開始しているので、必要に応じて通知するポーリングプロセスを生成させてみませんか?いくつかの点で、ほぼ完了しているようです。

(もちろん、そのような機能がAWSに組み込まれていると便利です。)

彼のStackOverflowプロファイルを見つけることができませんでしたが、彼が表示された場合は、これを編集してクレジットを付与します。

于 2012-04-05T22:06:11.503 に答える