2012-08-23 23 views
7

Necesito obtener la instancia por ID de instancia, ¿es posible hacerlo sin solicitar una lista de todas las instancias?Obtener instancia por ID de instancia

He intentado:

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

Funciona, pero ¿hay alguna otra manera de obtener la instancia?

La razón por la que estoy preguntando es que he recibido UnauthorizedOperation para la solicitud get_all_instances, por lo que preferiría cambiar la solicitud, no la configuración de seguridad.

+0

¿Cuándo obtuviste la Operación no autorizada? Me refiero a la ejecución del comando –

+0

c2.get_all_instances ([instanceId]) – Francheska

Respuesta

7

Usted puede tratar con

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

que sin duda va a funcionar.

15

Tal boto ha evolucionado desde el momento en que el OP hizo la pregunta, pero esto merece el hasta respuesta añadir la fecha aquí:

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

Esto le da la reserva, no la instancia. – Nate

+0

@Nate: actualizado para que coincida con la API – Jordan

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

En cuanto a la respuesta anterior usando

get_all_instances() 

, del 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(). 
Cuestiones relacionadas