2014-05-20 23 views
5

Ich erstelle eine VPC und Sicherheitsgruppen mit Boto. Wenn ich nur Elemente in einem Skript erstelle und markiere, bekomme ich immer Fehler, weil die Elemente noch nicht fertig sind. Ich kann einfach in ein Handbuch warten, aber ich ziehe es vor, sie zu ziehen, um zu sehen, ob sie wirklich bereit sind. Für die VPC oder Subnetzen kann ich so etwas wie verwenden:AWS boto überprüfen, ob Sicherheitsgruppe oder andere Elemente bereit ist

import boto.vpc 

v = boto.vpc.VPCConnection(
    region=primary_region, 
    aws_access_key_id=aws_access_key, 
    aws_secret_access_key=aws_secret_key) 

vpcs = v.get_all_vpcs() 
print vpcs[0].state 

mit etwas mehr Logik und einer while-Schleife zu überprüfen, ob der Zustand available ist, running oder was auch immer. Dies funktioniert gut für die meisten vpc/aws-Elemente, aber einige Elemente wie Sicherheitsgruppen haben kein Zustandsattribut, wenn sie mit get_all_security_groups oder dort gleichwertig zurückgegeben werden.

Wie prüfen die Leute, ob diese Elemente bereit sind?

Antwort

1

Es stellt sich heraus, dass für die Elemente ohne eine Zustandseigenschaft Sie kreativ werden und etwas potenziell brüchigen Code schreiben müssen.

Für das spezifische Beispiel von Sicherheitsgruppen, das tue ich:

  1. Verwendet get_all_security_groups mit einem Filter die Sicherheitsgruppe zu finden.
  2. Prüft auf sg.rules_egress
  3. Wiederholungen mit exponentiellem Backoff.

Wenn es beginnt zu scheitern (und ich bin sicher, es wird), habe ich auf andere und bessere Wege einen anderen Blick nehmen werde, hat aber ohne bisher funktioniert nicht.

Verwandte Themen