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.