Buscar..


Observaciones

El parámetro --query menudo se pasa por alto, pero es increíblemente poderoso. Utiliza el lenguaje de consulta de JMESPath para filtrar las respuestas del servicio a lo que desea exactamente.

Listado de instancias de una manera fácil de leer

Las instancias tienen una gran cantidad de metadatos que se devuelven de una llamada a describe-instances , pero muchas veces solo quieres ver lo básico. Puede utilizar una consulta JMESPath combinada con la salida de la tabla para mostrar información de instancia concisa de una manera fácil de leer.

aws ec2 describe-instances --output table --query "Reservations[].Instances[].{Name: Tags[?Key == 'Name'].Value | [0], Id: InstanceId, State: State.Name, Type: InstanceType}"
-----------------------------------------------------
|                 DescribeInstances                 |
+-----------+---------------+----------+------------+
|    Id     |     Name      |  State   |   Type     |
+-----------+---------------+----------+------------+
|  i-abc123 |  None         |  stopped |  m3.large  |
|  i-def456 |  amazon linux |  stopped |  t2.micro  |
|  i-ghi789 |  proxy        |  running |  t2.micro  |
+-----------+---------------+----------+------------+

Ahora vamos a romper esa pieza por pieza. Primero, tenemos --output table . Esto produce una representación de tabla coloreada de la respuesta. En general, esto es más útil con comandos que devuelven pequeños conjuntos de datos o donde se han filtrado los datos.

Ahora en el --query . Este parece largo, pero en realidad es bastante simple. La primera parte es Reservations[].Instances[] . Esto devuelve una lista aplanada de todas las instancias devueltas.

La siguiente parte de la consulta se encapsula con .{} . Lo que está haciendo es crear un nuevo objeto json para cada elemento de la lista donde cada valor es una consulta JMESPath que se aplicará al objeto de origen (en este caso, una instancia). La mayoría de estos son muy simples, pero el Name es un poco más complejo.

La consulta completa para obtener Name es Tags[?Key == 'Name'].Value | [0] . La primera parte de eso, Tags[?Key == 'Name'] es buscar en las etiquetas de la instancia una etiqueta cuya clave sea Name . La segunda mitad .Value | [0] es seleccionar los valores de cada una de esas etiquetas y luego tomar el primer elemento de la lista (en este caso, solo habrá uno).

Exactamente lo que quieres en esa mesa depende completamente de ti. Si quisiera agregar información de DNS, por ejemplo, podría agregar fácilmente una nueva clave DNS: PublicDnsName :

aws ec2 describe-instances --output table --query "Reservations[].Instances[].{Name: Tags[?Key == 'Name'].Value | [0], Id: InstanceId, State: State.Name, Type: InstanceType, DNS: PublicDnsName}"
--------------------------------------------------------------------------------------------------------
|                                           DescribeInstances                                          |
+--------------------------------------------------+-----------+---------------+----------+------------+
|                        DNS                       |    Id     |     Name      |  State   |   Type     |
+--------------------------------------------------+-----------+---------------+----------+------------+
|                                                  |  i-abc123 |  None         |  stopped |  m3.large  |
|                                                  |  i-def456 |  amazon linux |  stopped |  t2.micro  |
|  ec2-192-168-1-1.us-west-2.compute.amazonaws.com |  i-ghi789 |  proxy        |  running |  t2.micro  |
+--------------------------------------------------+-----------+---------------+----------+------------+


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow