Obtener la fecha de creación de las instancias de AWS EC2
Tags: aws, ec2, jmespath, cli
Published: 2021-05-21 14:59:07

AWS, al listar las instancias de EC2, no devuelve ninguna propiedad que diga cuándo se creó una instancias; esto puede sernos útil en determinadas ocasiones. Podríamos pensar que nos podría valer la propiedad “LaunchTime”, pero eso en realidad nos indica cuándo se encendió por última vez la instancia, no cuándo se creó.

Aunque directamente este dato no lo proporciona directamente AWS, podemos deducirlo indirectamente a través de otros parámetros:

* La fecha más antigua de vinculación de las tarjetas de red
* La fecha más antigua de vinculación de los discos

Esto debe ser válido, ya que por ejemplo, la tarjeta de red principal no se puede desvincular de la instancia (You cannot detach a primary network interface from an instance), y su fecha de vinculación permanece siempre igual, aún entre reinicios. También suele ser válido que normalmente, el disco principal de una instancia no suele cambiar, aunque esto no siempre es cierto.

Con estos datos, podemos lanzar una consulta de la CLI de AWS y mediante el parámetro query (que es una expresión JMESPath), obtener dichos valores:

```bash
aws ec2 describe-instances --output table --query 'sort_by(Reservations[].Instances[?State.Name!=`terminated`][].{Name: Tags[?Key==`Name`].Value | [0], InstanceId: InstanceId, CreationTime: min([min(NetworkInterfaces[].Attachment.AttachTime), min(BlockDeviceMappings[].Ebs.AttachTime)]), State: State.Name, InstanceType: InstanceType, PublicIpAddress: PublicIpAddress, PrivateIpAddress: PrivateIpAddress}, &CreationTime)'
```

Obtendremos una salida similar a la siguiente:

```
----------------------------------------------------------------------------------------------------------------------------------------------------------
|                                                                    DescribeInstances                                                                   |
+--------------------------+----------------------+---------------+----------------------------------+-------------------+-------------------+-----------+
|       CreationTime       |     InstanceId       | InstanceType  |              Name                | PrivateIpAddress  |  PublicIpAddress  |   State   |
+--------------------------+----------------------+---------------+----------------------------------+-------------------+-------------------+-----------+
|  2019-05-16T10:33:52.000Z|  i-xxxxxxxxxxxxxxxxx |  t3a.2xlarge  |  yyyyyyyyyyyyy                   |  10.25.z.z        |  None             |  running  |
|  2019-06-03T15:16:31.000Z|  i-xxxxxxxxxxxxxxxxx |  c5.xlarge    |  yyyyyyyyyyyyy                   |  10.25.z.z        |  None             |  running  |
|  2019-07-18T12:05:46.000Z|  i-xxxxxxxxxxxxxxxxx |  t2.small     |  yyyyyyyyyyyy                    |  10.25.z.z        |  1.2.3.4          |  running  |
|  2020-01-13T11:08:03.000Z|  i-xxxxxxxxxxxxxxxxx |  t2.micro     |  yyyyyyyyyyyy                    |  10.25.z.z        |  None             |  running  |
|  2020-02-11T15:43:12.000Z|  i-xxxxxxxxxxxxxxxxx |  c5.large     |  yyyy                            |  10.25.z.z        |  None             |  running  |
|  2020-02-11T16:46:14.000Z|  i-xxxxxxxxxxxxxxxxx |  c5.large     |  yyyyyyyyy                       |  10.25.z.z        |  None             |  running  |
|  2020-02-12T08:33:28.000Z|  i-xxxxxxxxxxxxxxxxx |  t2.micro     |  yyyyyyyyyyyyy                   |  10.25.z.z        |  None             |  running  |
|  2020-02-12T14:01:33.000Z|  i-xxxxxxxxxxxxxxxxx |  c5.large     |  yyyyyyyyyy                      |  10.25.z.z        |  None             |  running  |
|  2020-02-13T05:30:34.000Z|  i-xxxxxxxxxxxxxxxxx |  t3.medium    |  yyyyyyyyyyyyyyyy                |  10.25.z.z        |  None             |  running  |
|  2020-02-13T05:30:34.000Z|  i-xxxxxxxxxxxxxxxxx |  t3.medium    |  yyyyyyyyyyyyyy                  |  10.25.z.z        |  None             |  running  |
|  2020-02-13T05:30:56.000Z|  i-xxxxxxxxxxxxxxxxx |  t3.medium    |  yyyyyyyyyyyyyy                  |  10.25.z.z        |  None             |  running  |
|  2020-02-13T05:30:56.000Z|  i-xxxxxxxxxxxxxxxxx |  t3.medium    |  yyyyyyyyy                       |  10.25.z.z        |  None             |  running  |
+--------------------------+----------------------+---------------+----------------------------------+-------------------+-------------------+-----------+
```