Determinación de la fecha / hora de creación de la instancia de Amazon EC2

¿Es posible determinar (a través de boto) cuándo se creó una instancia de EC2 en particular?

http://boto.readthedocs.org/en/latest/ref/ec2.html no parece dar nada útil en este caso. Necesidad de averiguar la fecha de creación de un conjunto particular de instancias de EC2.

¡Gracias!

No hay ningún atributo llamado create_time para la instancia de EC2, solo está disponible launch_time .

Sin embargo, puede usar el siguiente código de Python para saber cuándo se creó el volumen, que a su vez le da tiempo para crear la instancia (tenga en cuenta que estoy hablando del volumen adjunto al crear la instancia):

 import boto3 ec2 = boto3.resource('ec2', region_name='instance_region_name') volume = ec2.Volume('vol-id') print volume.create_time.strftime("%Y-%m-%d %H:%M:%S") 

La alternativa es usar código personalizado. Cuando crea instancias con create_instances() , puede registrar el launch_time para una instancia determinada junto con su ID de instancia y su nombre en algún lugar como DynamoDB para que pueda recuperar los “tiempos de creación” siempre que desee usar los ID de instancia.

Como se muestra aquí:

http://boto.readthedocs.org/en/latest/ref/ec2.html#module-boto.ec2.instance

Cada objeto de instancia tiene un atributo llamado launch_time que contiene una cadena de fecha y hora IS08601 que representa cuando se lanzó la instancia.

En boto, podrías hacer algo como esto:

 import boto.ec2 conn = boto.ec2.connect_to_region('us-west-1') reservations = conn.get_all_instances() for r in reservations: for i in r.instances: print('%s\t%s' % (i.id, i.launch_time) 

Suponiendo que está utilizando una instancia respaldada por EBS y no está haciendo malabares con una unidad de lujo, la mejor manera de averiguar la fecha de creación de una instancia es mirar la hora de creación del volumen raíz de la unidad. Si bien el tiempo de inicio de la instancia cambiará cada vez que lo detenga y lo inicie, el tiempo de creación de un volumen EBS es estático.

Aquí hay un script rápido para encontrar el tiempo de creación de la instancia desde la que se está ejecutando actualmente:

 import boto import subprocess instance_id = subprocess.check_output(['curl', '-s', 'http://169.254.169.254/latest/meta-data/instance-id']) conn = boto.connect_ec2() root_device = conn.get_instance_attribute(instance_id, 'rootDeviceName')['rootDeviceName'] root_vol = conn.get_all_volumes(filters={"attachment.instance-id": instance_id, "attachment.device": root_device})[0] print root_vol.create_time 

Tenga en cuenta que esto requiere que la función IAM de la instancia tenga ec2:DescribeInstanceAttribute y ec2:DescribeVolumes permisos

Si desea calcular el tiempo de actividad actual en función del tiempo de lanzamiento de una instancia de EC2, puede intentar esto:

 import datetime lt_datetime = datetime.datetime.strptime(i.launch_time, '%Y-%m-%dT%H:%M:%S') lt_delta = datetime.datetime.utcnow() - lt_datetime uptime = str(lt_delta)