Necesito auditar una gran cantidad de cuentas de AWS para determinar a qué instancias EC2 les falta el agente de SSM. Luego necesito que se emitan todas esas instancias y sus etiquetas.
Ejecutar aws ssm describe-instance-information enumera todas las instancias que tienen el agente instalado y se están ejecutando, pero no enumera las instancias a las que les falta el agente o los sistemas que podrían estar apagados.
Esto imprimirá una lista de todas sus instancias con "éxito" impreso debajo de las que se administran.
for instance in $(aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId]' --output text ) do; managed=$(aws ssm describe-instance-information --filters "Key=InstanceIds,Values=$instance" --query 'InstanceInformationList[*].[AssociationStatus]' --output text) echo "$instance $managed"; donePara agregar un conjunto de etiquetas simple pero no bien formateado, reemplace la línea de eco con
if [[ "$managed" != "Success" ]]; then managed="Fail"; fi echo "$instance $managed" aws --profile GC-Staging ec2 describe-instances --instance-id $instance --query 'Reservations[*].Instances[*].[Tags[*].Value]' --output text#!/bin/bash for instance in $(aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId]' --output text ) do managed=$(aws ssm describe-instance-information --filters "Key=InstanceIds,Values=$instance" --query 'InstanceInformationList[*].[AssociationStatus]' --output text) if [[ "$managed" != "Success" ]]; then managed="Not Managed"; fi aws ec2 describe-instances --instance-id $instance --output text --query 'Reservations[*].Instances[*].[InstanceId, Placement.AvailabilityZone, [Tags[?Key==`Name`].Value] [0][0], [Tags[?Key==`App`].Value] [0][0], [Tags[?Key==`Product`].Value] [0][0], [Tags[?Key==`Team`].Value] [0][0] ]' echo "$managed" doneGuarde y haga que el script sea ejecutable, luego ejecútelo
script.sh > file.tsv
Y finalmente importarlo a excel