2012-08-23 19 views
7

Ho bisogno di ottenere l'istanza per ist id-, è possibile farlo senza richiedere un elenco di tutte le istanze?Ottieni istanza per istanza-id

ho provato:

ec2_conn = boto.connect_ec2(aws_access_key_id=key, aws_secret_access_key=access) 
c2.get_all_instances([instanceId]) 

Funziona, ma c'è qualche altro modo per ottenere l'istanza?

Il motivo per cui sto chiedendo è che ho ricevuto UnauthorizedOperation per la richiesta get_all_instances, quindi preferirei cambiare la richiesta, non le impostazioni di sicurezza.

+0

quando hai ottenuto l'Operazione non Autorizzata? Voglio dire dopo quale esecuzione del comando –

+0

c2.get_all_instances ([instanceId]) – Francheska

risposta

7

Si può provare con

reservations = ec2_conn.get_all_instances(filters={'instance-id' : 'i-xxxxxxxx'}) 
new_instance = reservations[0].instances[0] 

sarà sicuramente funzionerà.

15

Forse boto è evoluta fin dai tempi del PO ha posto la domanda, ma questo merita l'aggiornate risposta da aggiungere qui:

reservations = ec2conn.get_all_instances(instance_ids=['i-12345678']) 
instance = reservations[0].instances[0] 
+0

Questo ti dà la prenotazione, non l'istanza. – Nate

+0

@Nate: aggiornato per corrispondere all'API – Jordan

3
instances = get_only_instances(instance_ids=['i-12345678']) 

Per quanto riguarda la risposta di cui sopra utilizzando

get_all_instances() 

, da BOTO API -

get_all_instances() is deprecated in favor of get_all_reservations(). 

A future major release will change get_all_instances() to return a list of 
boto.ec2.instance.Instance objects as its name suggests. 
To obtain that behavior today, use get_only_instances(). 
Problemi correlati