0

AWSで実行されているEC2インスタンスの数は約1年間です。ここでは、未使用インスタンスのクリーンアップアクティビティを実行しようとしています。インスタンスを起動したユーザー名に基づいています。RunInstancesイベントのCloudTrailログからのユーザー名の取得

S3 Bucketからcloudtrailログをダウンロードしようとしましたが、ユーザー名と 'RunInstances'イベントをフィルタリングして、インスタンスを起動したユーザーとインスタンスの詳細を見つけました。

以下は、すべてのcloudtrailログを1つのフォルダにダウンロードし、それらを解凍してインスタンスを '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万を超えるログファイルがあるため、時間がかかるためです。

プログラミング言語やスクリプトでこれを理解する方法が必要です。

ご協力いただきありがとうございます。

+1

これはEC2インスタンスまたはPCで実行していますか? S3への接続は、EC2インスタンスから非常に高速になります。あなたが解凍する必要があるので、私はダウンロードの代わりに、おそらくhttps://github.com/s3fs-fuse/s3fs-fuseを除いて本当に分かりません。 – at0mzk

答えて

1

directly get info from s3 bucket itselfはどういう意味ですか? S3は、計算資源ではない記憶資源である。ディスクファイルへのダウンロードを避けることができます。代わりに、ファイルに保存せずにメモリ内で処理できますが、それでもダウンロードする必要があります。

提案:

  • は全体の年のために、すべての地域のすべてのコースをダウンロードしないでください。それは時間がかかるでしょう
  • 一度に領域の1ヶ月のデータを処理します。証跡ログを処理するための多くの便利な機能を持っており、あなたは私が(唯一の前日ログ用)毎日これを行う

が欲しい情報を抽出使用のPython/Boto3

  • 他の月/地域のためにそれを繰り返しますが、私ちょうどコードを与えることはできません。

  • 関連する問題