Boto: Wie kann man am besten prüfen, ob ein CloudFormation-Stack existiert?

8

Was ist der beste Weg zu überprüfen, ob ein CloudFormation-Stack vorhanden ist und sich nicht in einem defekten Zustand befindet, indem Sie Boto verwenden? Mit "kaputt" meine ich Fehler und Rollback-Zustände.

Ich möchte keine try/except Lösung verwenden, weil Boto sie als Fehler protokolliert und in meinem Szenario das Ausnahmeprotokoll an ein Alarmsystem sendet.

Im Moment habe ich folgende Lösungen:

1) Verwenden Sie boto.cloudformation.connection.CloudFormationConnection.describe_stacks()

%Vor%

Das ist langsam, weil ich viele Stapel habe.

2) Verwenden Sie boto.cloudformation.connection.CloudFormationConnection.list_stacks()

%Vor%

Das dauert ewig, weil Zusammenfassungen 90 Tage lang aufbewahrt werden und ich viele Stapel habe.

Frage: Was ist die ideale Lösung, um zu überprüfen, ob ein bestimmter Stapel existiert und sich nicht in einem Fehler- oder Rollback-Zustand befindet?

    
Hugo Tavares 11.04.2014, 17:38
quelle

3 Antworten

3

Von den Boto-Dokumenten:

  

describe_stacks (stack_name_or_id = None, next_token = None)

     

Gibt die Beschreibung für den angegebenen Stapel zurück; Wenn kein Stapelname angegeben wurde, wird die Beschreibung für alle erstellten Stapel zurückgegeben.

     

Parameter: stack_name_or_id (string) - Der Name oder die eindeutige Kennung, die dem Stapel zugeordnet ist.

Da Sie den Stacknamen kennen, können Sie describe_stacks(stack_name_or_id=STACK_NAME) verwenden. Das sollte die Dinge für dich beschleunigen.

    
Ben Whaley 11.04.2014 18:44
quelle
0

Der beste Weg, dies zu tun, ist, dies in zwei separate Probleme aufzuteilen:

  1. Finden Sie heraus, welche Stapel nicht existieren.
  2. Finden Sie heraus, welche Stapel sich in einem Fehlerzustand befinden.

Sieht vielleicht so aus:

%Vor%

Sie können viel mehr Stacks haben, als ich es tue. Vielleicht müssen Sie next_token verwenden, um paginieren zu können, was ein bisschen mühsam wäre. Sie können jedoch sehen, dass beide Operationen jeweils mit einer einzelnen Anforderung ausgeführt werden können und keine Ausnahme auslösen.

    
Liyan Chang 30.11.2014 04:54
quelle
0

Ich weiß, das ist alt, aber jemand fragte, ob es vor ein paar Wochen noch eine Lösung dafür gäbe, also geht es hier ...

Wenn Sie die boto3-Dokumente lesen, werden häufig gelöschte Stapel erwähnt. Um dies zu tun, müssen Sie verwenden, um die vollständige Stack-ID zu verwenden. Sie können den Stapelnamen nicht verwenden. Dies liegt daran, dass das einzige, was wirklich einzigartig an dem Stack ist, die ID ist.

Beispiel:

%Vor%

Das einzige Mal, dass eine Ausnahme zurückgegeben wird, ist, wenn diese Stack-ID nicht existiert.

Prost!

    
Sathed 19.05.2017 21:39
quelle