2014-05-20 10 views
5

Sto creando un VPC e gruppi di sicurezza con boto. Se creo e tagga gli elementi in uno script continuo a ricevere errori, perché gli elementi non sono ancora pronti. Posso solo mettere una attesa manuale, ma preferisco trascinarli per vedere se sono effettivamente pronti. Per la VPC o sottoreti posso usare qualcosa come:AWS boto controlla se il gruppo di sicurezza o altri elementi sono pronti

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 

con un po 'di logica e un ciclo while per verificare se lo stato è available, running o qualsiasi altra cosa. Funziona bene per la maggior parte degli elementi vpc/aws, ma alcuni elementi come i gruppi di sicurezza non hanno un attributo di stato quando vengono restituiti con get_all_security_groups o equivalente.

In che modo le persone verificano se questi elementi sono pronti per essere utilizzati?

risposta

1

Si scopre che per gli elementi senza una proprietà di stato, è necessario essere creativi e scrivere un codice potenzialmente fragile.

Per l'esempio specifico di gruppi di protezione, lo faccio:

  1. Utilizza get_all_security_groups con un filtro per trovare il gruppo di protezione.
  2. Controlli per sg.rules_egress
  3. Riprova con il backoff esponenziale.

Quando inizia a fallire (e sono sicuro che lo sarà), darò un'altra occhiata ad altri e migliori modi, ma ha funzionato senza fallire finora.