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.
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:
Gibt es eine Methode, die aufgerufen wird, so dass instance
den IST-Status meldet?
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:
Um den gleichen Effekt in Boto3 zu erzielen, sollte so etwas funktionieren.
%Vor%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.
Tags und Links python amazon-web-services boto amazon-ec2