Busque la instancia ec2 por su nombre en la herramienta de línea de comando aws

32

Tengo una instancia llamada dev-server-03. Ahora, ¿cómo puedo buscar todas las dev-server-*instancias desde la línea de comandos?

Estoy usando la herramienta aws cli.

Shiplu Mokaddim
fuente
Esto depende de cómo haya nombrado la instancia. ¿Estableció el nombre de host dentro del sistema operativo, en la consola de AWS o en ambos?
Craig Watson
Sí, el nombre de host del sistema operativo está configurado con el mismo nombre.
Shiplu Mokaddim

Respuestas:

55

Suponiendo que está utilizando la convención de poner el nombre de la instancia en una etiqueta con la clave de "Nombre" (esto es lo que hace la consola de AWS cuando ingresa un nombre), puede usar la --filtersopción para enumerar esas instancias con aws-cli:

aws ec2 describe-instances --filters 'Name=tag:Name,Values=dev-server-*'

Si solo desea los identificadores de instancia de esas instancias, puede usar:

aws ec2 describe-instances --filters 'Name=tag:Name,Values=dev-server-*' \
  --output text --query 'Reservations[*].Instances[*].InstanceId'

Nota: --querypuede requerir una versión reciente de aws-cli pero vale la pena obtenerla.

Eric Hammond
fuente
1
Omg, me llevó casi media hora resolver esto ... qué raro es esto:Name=tag:Name
lisak
1
Gracias Eric - que estaba recibiendo múltiples identificadores de instancia en la misma línea, el uso de la consulta, pero github.com/aws/aws-cli/issues/914#issuecomment-56210312 sugirió --query 'Reservations[].Instances[].[InstanceId]que funciona para mí
jaygooby
3
FWIW, la jqherramienta se puede utilizar para obtener resultados similares a aws --queryeste: - aws ec2 describe-instances | jq '.Reservations[].Instances[].PrivateIpAddress'note el .punto anterior .
MarkHu
¿Puedes hacer que los filtros de descripción de instancias no distingan entre mayúsculas y minúsculas?
red888
3

Puede filtrar aún más con el nombre, la identificación de la instancia y la IP privada con a continuación,

aws ec2 describe-instances --filters "Name=tag:Name,Values=*myinstance*" --output json --query 'Reservations[*].Instances[*].[PrivateIpAddress,InstanceId,Tags[?Key==`Name`].Value]' --region us-east-1
Siva Prasad Koka
fuente