AWS CloudWatch LogsをLambdaにストリーミングするときのサブスクリプションフィルタパターンの書き方 はじめに AWS上で動いているアプリケーション監視の際に、CloudWatch Logsだけの機能を利用してログのモニタリングを行う場合、logs2snsを利用して、ログ文字列の監視をおこなっています。 この設定の中で、CloudWatchログからLambdaにストリーミングするためのフィルターを書く必要があるのですが、OR条件の書き方がわからず、すべてのログを送信していた時期がありました(お金の無駄遣い!) 反省の意味も含めて、備忘録としてまとめておきます。ちなみに、JSONログイベントについては今回は記載しません。また、ログの形式が「その他」の場合について記載します。 サブスクリプションフィルタのパターンとは ここのことです パターン 公式ドキュメントはこちらです。 フィルターとパターンの構文 [ERROR] A fatal exception has occurred Exiting with ERRORCODE: -1 という文字列(公式ドキュメントから流用)があった場合。 部分一致 フィルタパターン ERROR 以下のように両方の行にマッチします。 [ERROR] A fatal exception has occurred Exiting with ERRORCODE: -1 AND条件 フィルタパターン ERROR fatal 半角スペースで複数の文字列を記載します。すべての文字列が含まれる以下の行にマッチします。 [ERROR] A fatal exception has occurred OR条件 フィルタパターン?fatal ?ERRORCODE文字列の前に?をつけて、複数の文字列を記載します。いずれかの文字列が含まれる行にマッチします。[ERROR] A fatal exception has occurred Exiting with ERRORCODE: -1 文字列Aが含まれていて、Bが含まれていない フィルタパターン ERROR -CODE 部分一致の文字列と、ハイフン(-)を先頭に付けた除外文字列を指定します。ERRORが含まれていてCODEが含まれていない以下の文字列がマッチします。 [ERROR] A fatal exception has occurred もうちょっと複雑な指定もできそうですが、今回はここまでで十分だったのでここまで。また必要になったときに続きます。 AWSlambdaサブスクリプションパターン Tweet