最近、インフラ運用でS3バケットに保存されているALBアクセスログを、AWS CLIコマンドで一括で取得する機会がありましたので、備忘としてコマンドを記載したいと思います。
ALBアクセスログをAWS CLIコマンドで一括で取得
ALBアクセスログとは
ALBはロードバランサーのことで、アクセスログを有効にするとS3に格納されます。またファイルの拡張子は.logですが、gzで圧縮された状態でS3に保存されます。S3には日付ごとにフォルダが作成されますが、数分ごとにファイルが分割されて保存されるため、1ファイルずつダウンロードして確認すると時間がかかります。また、数日分のログをまとめて確認するときは、AWS CLIで一括ダウンロードすると便利です。
前提条件
AWS CLIコマンドでS3のログをダウンロードする場合は、コマンドを実行する環境から、S3の対象バケットにアクセスできることが前提です。また、S3のオブジェクトをダウンロードできる権限も必要となります。実行環境はローカルPCでも大丈夫ですが、AWSのCloudShellからも操作可能です。
AWS CLIコマンド
1.下記のコマンドで、取得したい日付のS3側フォルダパスを指定してダウンロードします。
aws s3 cp s3://<フォルダのパス> ./<ローカルのフォルダ名> --recursive --include "*"
2.ダウンロードした複数のファイルを下記コマンドで一括して解凍します。
※gzファイルが格納されたディレクトリで実行する想定
find ./ -type f -name "*.gz" -exec gunzip {} \;
3.下記コマンドで解凍したファイルを1つにまとめます。
cat *.log > alb.log
まとめ
WEB系のシステム運用などではロードバランサーのアクセスログを見る機会が度々あるかと思います。
障害のあった時間帯などのALBログを調査するときなどは、手軽に利用できるコマンドだと思います。