我需要审计大量的AWS帐户,以确定哪些EC2实例缺少SSM代理。然后我需要输出所有这些实例和它们的标签。
running aws ssm describe-instance-information将列出已安装并正在运行代理的所有实例,但不会列出缺少代理的实例或可能已关闭的系统。
发布于 2020-03-26 09:57:42
#!/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中。
发布于 2020-03-20 11:09:44
这将打印所有实例的列表,并在托管实例下面打印"success“。
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 https://stackoverflow.com/questions/60084104
复制相似问题