cli aws python amazon-web-services amazon-ec2 boto ec2-api-tools

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



install boto3 (4)

¿Es posible determinar (mediante boto) cuándo se creó una instancia EC2 particular?

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

¡Gracias!


Como se muestra aquí:

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

Cada objeto Instance 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)


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)


Suponiendo que está utilizando una instancia respaldada por EBS y no está haciendo ningún malabarismo de 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. Mientras que el tiempo de inicio de la instancia cambiará cada vez que lo detenga y lo inicie, la hora de creación de un volumen EBS es estática.

Aquí hay una secuencia de comandos rápida para encontrar la hora de creación de la instancia en 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 el rol IAM de la instancia tenga los ec2:DescribeInstanceAttribute y ec2:DescribeVolumes


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

Sin embargo, puede usar el siguiente código de Python para saber cuándo se creó el volumen, lo que a su vez le da tiempo de creación de 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 un código personalizado. Cuando crea instancias con create_instances() , puede registrar el launch_time para la instancia determinada junto con su ID y nombre de instancia en algún lugar como DynamoDB para que pueda recuperar los "tiempos de creación" cuando lo desee utilizando los ID de instancia.