2012-04-03 3 views
5

Wie kann ich neben der Abfrage feststellen, wann eine lang andauernde Amazon EC2-Operation abgeschlossen ist? Beispielsweise kann die Verwendung der API-Funktion CreateImage mehrere Minuten dauern.Woher weiß ich, wann ein Amazon EC2-Vorgang abgeschlossen ist?

Im Moment mache ich das:

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

ich hasse. Nach dem Anruf CreateImage möchte ich nur irgendwie benachrichtigt werden, dass alles fertig ist und weitermachen. Ist das möglich? Ich verwende das AWS .NET SDK in diesem Beispiel, aber ich suche nicht speziell nach einer C# -Lösung.

UPDATE: Cross-Gepostet zum AWS Forums

Antwort

3

können Einige Ereignisse in amazon konfiguriert werden Benachrichtigungen an einem SNS Thema zu senden. Wenn Sie beispielsweise die automatische Skalierung verwenden, können Sie Benachrichtigungen erhalten, wenn ein Server gestartet und beendet wird. Soweit ich weiß, gibt es keine Möglichkeit, diese Benachrichtigungen für andere Dienste wie CreateImage auszulösen. Ich habe diese Art von Feature in der Vergangenheit ohne Glück gesucht. Ich habe versucht, dies zu tun, um ein Skript zu erstellen, das Server in einer bestimmten Reihenfolge startet. Ich habe gerade ihre API abgefragt, weil ich keine Möglichkeit gefunden habe, mich bei diesen Events anzumelden.

0

James Hunter Ross diese Frage beantwortet over on the AWS Forums wie folgt:

Polling ist. Das heißt, da Sie ein C# -Programm gestartet haben, warum lassen Sie es nicht einen Polling-Prozess spawnen, der Sie benachrichtigt, wie Sie es wünschen? Es scheint, dass Sie in gewisser Hinsicht fast fertig sind.

(Natürlich wäre es schön, wenn eine solche Funktionalität bei AWS-in gebaut wurde.)

ich nicht in der Lage war, ein Profil für Stackoverflow, ihn zu finden, aber wenn er auftaucht, ich werde Bearbeite das, um ihm Kredit zu geben.