Abruf einer EC2-Instanz stoppen oder starten mit Boto

8

Ich verwende AWS, Python und die Boto-Bibliothek .

Ich möchte .start() oder .stop() auf einer Boto EC2-Instanz aufrufen und dann "abfragen", bis beide abgeschlossen sind.

%Vor%

In der letzten while -Schleife scheint der Status jedoch entweder bei "Anstehend" oder "Anhalten" zu hängen. Der Schwerpunkt liegt auf "scheint", da ich von meiner AWS-Konsole aus sehen kann, dass die Instanz tatsächlich zu "gestartet" oder "gestoppt" wird.

Der einzige Weg, wie ich das beheben konnte, war, .get_all_reservations() in der while -Schleife aufzurufen, so:

%Vor%

Gibt es eine Methode, die aufgerufen wird, so dass instance den IST-Status meldet?

    
Dan H 19.10.2014, 02:40
quelle

3 Antworten

11

Der Instanzstatus wird nicht automatisch aktualisiert. Sie müssen die Methode update aufrufen, um dem Objekt mitzuteilen, dass es einen weiteren Round-Trip-Aufruf an den EC2-Service senden und den letzten Status des Objekts abrufen soll. So etwas sollte funktionieren:

%Vor%

Um den gleichen Effekt in Boto3 zu erzielen, sollte so etwas funktionieren.

%Vor%     
garnaat 19.10.2014, 13:24
quelle
4

Die Funktion wait_until_running in Python Boto3 scheint das zu sein, was ich verwenden würde.

Ссылка

    
Antu 27.07.2016 07:19
quelle
3

Das funktioniert auch für mich. Auf Dokumenten haben wir das:

update(validate=False, dry_run=False)
- Aktualisieren Sie die Statusinformationen der Instanz, indem Sie einen Aufruf ausführen, um die aktuellen Instanzattribute vom Service abzurufen.

Parameter: validate (bool)
- Wenn EC2 keine Daten über die Instanz zurückgibt, gibt die Aktualisierungsmethode standardmäßig zurück. Wenn der validate-Parameter True ist, wird jedoch eine ValueError -Ausnahme ausgelöst, wenn keine Daten von EC2 zurückgegeben werden.

    
Hermes Pimentel 07.04.2015 02:39
quelle