【发布时间】:2019-06-29 18:51:45
【问题描述】:
我们有大量的 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 万个日志文件。
我需要一种方法来使用任何编程语言或脚本来解决这个问题。
感谢您的支持。
【问题讨论】:
-
您是在 EC2 实例上还是在您的 PC 上运行它?从 EC2 实例连接到 S3 会快很多。由于您需要解压缩,我真的看不到下载的替代方法,除了 github.com/s3fs-fuse/s3fs-fuse
标签: amazon-web-services amazon-s3 amazon-ec2 boto3 amazon-cloudtrail