LoginSignup
1
1

More than 3 years have passed since last update.

AWS CLI でS3のログをgrepしたい(Windows環境)

Posted at

S3バケットへのアクセスログを有効にしたものの、ログファイルが細かく分かれてしまい検索が難しい。。。
そこで一括で検索できればよいなと思い、作成しました。

下記を参考にさせていただきました。
こちらはシェルスクリプトでしたが、Windows環境で実行する用にバッチファイルに変換しました。
https://dev.classmethod.jp/cloud/aws/grep-s3-files-by-aws-cli/

s3loggrep.bat
rem You need to install jq.

rem どのログファイルに文字列がヒットしたか知りたいため、あえてecho on にしています。
rem @echo off


rem AWS CLIのクレデンシャル情報を分けている場合は、プロファイル名を指定します。
rem 分けてなければ"default"でよいです。
set PROF_NAME="default"

rem 検索対象のバケット名を指定します。
set S3_BUCKET=testbacket

rem ログファイルの接頭辞を指定します。
set S3_KEY_PREFEX="testlog"

rem 検索したい文字列を指定します。
set SEARCH_STR="hogehoge"

rem list-objects-v2の出力を、jqを用いることで"Key"のみを抽出し、
rem さらに↑で指定した接頭辞で絞ってテキストファイルに出力します。
aws s3api list-objects-v2 --bucket %S3_BUCKET% --profile %PROF_NAME% |jq -r ".Contents[].Key" |findstr %S3_KEY_PREFEX% > list.txt

rem ログ名の降順でソートして別のテキストファイルに出力します。
sort /r list.txt > list2.txt


rem テキストファイルから順番にKeyを呼び出し、文字列を検索するループ処理です。
for /f %%i in (list2.txt) do (
  aws s3 cp s3://%S3_BUCKET%/%%i - --profile %PROF_NAME% | findstr %SEARCH_STR%
)
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1