Агент AWS SSM. Можно ли с помощью aws cli перечислить все экземпляры AWS, в которых отсутствует агент SSM?

Мне нужно провести аудит большого количества учетных записей AWS, чтобы определить, в каких экземплярах EC2 отсутствует агент SSM. Затем мне нужно вывести все эти экземпляры и их теги.

При выполнении aws ssm describe-instance-information перечислены все экземпляры, в которых установлен и запущен агент, но не перечислены экземпляры, в которых отсутствует агент, или системы, которые могут быть отключены.


person Kayotic    schedule 05.02.2020    source источник
comment
Стоит начать с AWS Config, чтобы понять, как с его помощью можно просматривать историю соответствия и ассоциации SSM State Manager.   -  person jarmod    schedule 06.02.2020
comment
Вероятно, нет способа использовать AWS CLI для вывода списка агентов, у которых отсутствует агент, но вы можете использовать его для перечисления всех экземпляров, а затем вы можете просто вычесть экземпляры с помощью агента. (например, в электронной таблице Excel или с помощью небольшого скрипта)   -  person John Rotenstein    schedule 06.02.2020


Ответы (2)


Это напечатает список всех ваших экземпляров с «успехом», напечатанный под теми, которыми управляют.

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";
done

Чтобы добавить простой, но плохо отформатированный набор тегов, замените строку эха на

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 
person andrew lorien    schedule 20.03.2020
comment
Спасибо! Я взял то, что у вас было, и внес пару изменений, чтобы вытащить определенные теги и настроить форматирование. Затем запустите сценарий и передайте его в файл tsv. Импортирован в excel, и все это красиво и красиво. - person Kayotic; 26.03.2020

#!/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"
done

Сохраните и сделайте скрипт исполняемым, затем запустите

script.sh > file.tsv

И, наконец, импортируйте его в Excel

person Kayotic    schedule 26.03.2020