PowerShellでCloudWatch Logsからキーワード検索してログを取得するツールを作ってみた

はじめに

数多くのLambdaを運用するシステムの場合、テスト時にCloudWatch Logsから特定のキーワードでログを検索して確認したいことがあります。
AWSコンソールでも検索はできますが、複数のログストリームにまたがる検索結果をコピーしたり、後で分析するためにファイルに保存したりするのは意外と手間がかかります。

そこで、PowerShellを使ってCloudWatch Logsから簡単にログを検索・取得し、テキストファイルに出力するツールを作成しました。

目次

必要なもの

環境

  • PowerShell 5.1以降
  • AWS PowerShellモジュール

インストール

AWS認証情報

以下のいずれかの方法で設定:

  • AWS CLI: aws configure
  • 環境変数: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
  • IAMロール(EC2インスタンス上で実行する場合)

必要なIAM権限

今回作成したコード

使い方

基本的な使い方

実行例1: S3アップロード完了ログの取得

実行例2: エラーログの取得

パラメータを変数で指定する場合

ログの出力形式

出力ファイルはタブ区切り形式で以下のように出力されます:

各行は以下の形式です:

  • ログストリーム名(タブ)タイムスタンプ(タブ)メッセージ

タブ区切りなので、Excelで開いて分析することも簡単です。

フィルターパターンの活用

CloudWatch Logsのフィルターパターンを使うと、柔軟な検索が可能です:

用途 フィルターパターン
特定の文字列を含む "エラーが発生しました"
複数の条件(AND) "エラー 処理"
複数の条件(OR) "?エラー ?警告"
除外 -"デバッグ"
全ログ取得 ""

まとめ

このツールを使うことで、以下のメリットが得られました。

  • 効率化: AWSコンソールでの手動検索・コピーが不要に
  • 再現性: 同じ条件で何度でも検索可能
  • 分析性: タブ区切り形式でExcelなどでの分析が容易
  • 共有性: ファイルとして保存できるため、チーム内での共有が簡単

Lambda関数が多数ある環境でのログ取得確認作業が大幅に効率化されました。
同じような課題を抱えている方の参考になれば幸いです。

参考リンク

投稿者プロフィール

YoshiSaaaan
2023/1にスカイアーチネットワークスにJoin
AWSを日々勉強中