Actualmente estoy intentando escribir una consulta aws ec2 desde la línea de comando (en AWS Linux, no es que deba importar). Estoy tratando de establecer un filtro que coincida con los siguientes:
Lo que realmente sucede es que se devuelven todas las instancias en estado desactivado, independientemente de si tienen la etiqueta "ShortPurpose":"Fleet" configurada.
Mis instancias están configuradas así:
+-------------+--------------+------------------------+--+ | Instance ID | Tag | Tag Value | | +-------------+--------------+------------------------+--+ | i-09876 | ShortPurpose | Fleet | | | | Organisation | UmbrellaCorp | | | | Name | cloud-01 | | | | Owner | ORG-UMBR-ELLA | | | | Purpose | Cloud processing fleet | | +-------------+--------------+------------------------+--+ | | | | | | i-12345 | (no tags) | | | | | | | | +-------------+--------------+------------------------+--+El comando que estoy usando es:
aws ec2 describe-instances --query "Reservations[*].Instances[*].InstanceId" --filters "Name=tag:ShortPurpose,Values=Fleet,Name=instance-state-code,Values=80"Los resultados son la respuesta de estilo de matriz estándar. El estado de la instancia se filtra correctamente, pero no las etiquetas.
Traté de verificar su comando y produce errores cuando lo escribió:
Error parsing parameter '--filters': Second instance of key "Name" encountered for input: Name=tag:ShortPurpose,Values=Fleet,Name=instance-state-code,Values=80 ^ This is often because there is a preceeding "," instead of a space.Sin embargo, pude usarlo con éxito en mis instancias de sandbox de la siguiente manera:
aws ec2 describe-instances \ --query "Reservations[*].Instances[*].InstanceId" \ --filters Name=tag:ShortPurpose,Values=Fleet Name=instance-state-code,Values=80Descubrí en un ejemplo en la documentación de AWS que tenía el formato de consulta incorrecto. La consulta correcta es:
aws ec2 describe-instances --query "Reservations[*].Instances[*].InstanceId" --filters "Name=tag-value,Values=Fleet" "Name=instance-state-code,Values=80"Tenga en cuenta que estoy ignorando la etiqueta ShortPurpose y, en cambio, busco directamente el valor, que puede existir en cualquier etiqueta.