2012-09-25 8 views
7

Desidero elencare tutte le istanze attualmente in esecuzione all'interno di un gruppo di ridimensionamento automatico. Può essere realizzato con boto?Elenco delle istanze nel gruppo di ridimensionamento automatico con boto

Deve esserci una relazione tra l'ASG e le istanze poiché boto ha il metodo shutdown_instances all'interno della classe boto.ec2.autoscale.group.AutoScalingGroup.

Qualsiasi suggerimento nella giusta direzione è molto apprezzato!

+0

Per boto3 utente - https://boto3.readthedocs.org/en/latest/reference/services/autoscaling.html –

risposta

10

Qualcosa del genere dovrebbe funzionare:

>>> import boto 
>>> autoscale = boto.connect_autoscale() 
>>> ec2 = boto.connect_ec2() 
>>> group = autoscale.get_all_groups(['mygroupname'])[0] 
>>> instance_ids = [i.instance_id for i in group.instances] 
>>> reservations = ec2.get_all_instances(instance_ids) 
>>> instances = [i for r in reservations for i in r.instances] 

Il motivo dobbiamo raccogliere l'istanza ID e quindi chiamare EC2 è che AutoScale memorizza solo un piccolo sottoinsieme di informazioni sulle istanze. Ciò porterebbe le istanze delle variabili a puntare a un elenco di oggetti Istanza per ogni istanza nel gruppo di scalabilità automatica "mygroupname".

+0

Grazie gaarnat! Proprio quello che stavo cercando –

+2

'instance_ids = [i.id per i in group.instances]' dovrebbe essere 'instance_ids = [i.instance_id per i in group.instances]' – mblakele

+0

Ho scritto uno script completo basato su questo snippet a http://stackoverflow.com/a/22544230/20774 –