我们有大量的 EC2 实例在 AWS 中运行了大约 1 年。现在我们正在尝试根据我们启动实例所使用的用户名对未使用的实例执行清理活动。
我尝试从 S3 Bucket 下载 cloudtrail 日志并尝试过滤用户名和“RunInstances”事件,以便我可以找到启动实例的用户以及实例详细信息。
以下是我用来将所有 cloudtrail 日志下载到单个文件夹中的脚本,解压缩它们并通过“RunInstances”事件过滤实例并给出实例计数。
我需要帮助从每个带有“RunInstances”事件的日志中检索用户名并停止实例。
我的脚本:
#!bin/sh
s3url="s3://S3bucket/AWSCloudtrailLogs/<accountno>/CloudTrail/region/2016/"
for (( i=1; i<=12; i++ ))
do
for (( j=1; j<=31; j++ ))
do
if [[ $i -le 9 && $j -le 9 ]]
then
aws s3 cp $s3url/0$i/0$j/ ~/test/ --recursive
elif [[ $i -le 9 && $j -ge 10 ]]
then
aws s3 cp $s3url/0$i/$j/ ~/test/ --recursive
elif [[ $i -ge 10 && $j -le 9 ]]
then
aws s3 cp $s3url/$i/0$j/ ~/test/ --recursive
elif [[ $i -ge 10 && $j -ge 10 ]]
then
aws s3 cp $s3url/$i/$j/ ~/test/ --recursive
fi
done
done
for v in `ls ~/test/` ; do gunzip $v ; done
for v in `ls ~/test/` ; do cat ~/test/$v | grep RunInstances >> ~/test/result.txt; done
grep -o 'RunInstances' ~/test/result.txt | wc -l
无论如何我可以在不下载 zip 文件并直接从 s3 存储桶本身获取信息的情况下做到这一点吗?因为这需要很多时间,因为我们有大约 100 万个日志文件。
我需要一种方法来使用任何编程语言或脚本来解决这个问题。
谢谢你的支持。