【実践】LambdaとAlarmで始める、エラー検知自動化バッチ運用術

はじめに


ここ最近は業務でAWSのLambdaを利用し、バッチ処理を実装しています。
その際、バッチは作ったらそれで終わりというわけにはいかないので、運用を考える必要がありました。

今回はLambdaと他AWSを連携し、
エラーが発生した場合は指定のメールアドレスに通知する実装の方法を記事にまとめたいと思います。

バッチの構成


利用するAWSのサービスは以下です。

・Lambda
・CloudWatch(メトリクスフィルター、Alarm)
・SNS(Simple Notification Service)

言葉で説明すると、
Lambdaで実装したバッチで発生したエラーをCloudWatchの各種機能を利用してキャッチし、その通知をSNSで利用してメール送信します。

Lambdaの実装


それではLambdaの実装から行っていきます。
AWSマネジメントコンソールからLambdaを選択し、画面左側にある「関数」をクリックして以下の画面を開いたら、
画面右上の「関数を作成」ボタンをクリックしてください。

今回はPython3.12を利用していきますが、
処理自体は例外を発生させてログをprintするだけなので、別になんでも問題ありません。
以下内容で、関数を作成するボタンを押下
※デフォルトの実行ロールの設定はデフォルトのままです。
新規ロールが作成されます。

処理は以下とします。


def lambda_handler(event, context):

    raise Exception("[CASAREAL_BLOG_ERROR]テスト")

簡単な処理ですが、
上記処理でprintしている「CASAREAL_BLOG_ERROR」の文字列をエラー検知に利用しますので、記憶に留めておいてください。

SNSトピックの作成


メール送信機能を利用するために、SNSトピックを作成します。
AWSマネジメントコンソールからSimple Notification Serviceを選択し、画面左側の「トピック」を選択して以下画面を開きます。

「トピックの作成」ボタンを押下したら以下内容を入力して、「トピックの作成」を押下

SNSサブスクリプションの設定


以下画面が表示されていると思うので、「サブスクリプションの作成」ボタンを押下

画像では消していますが、ARNには先ほど作成したSNS トピックのARN
プロトコルに「Eメール」
エンドポイントにメールを送りたいアドレスを設定して「サブスクリプションの作成」ボタンを押下

設定したメールアドレスに、承認メールが送付されるので承認してください。

エラー検知の設定


次はいよいよエラー検知の設定方法について記載していきます。
エラー検知の設定にはCloudWatchを利用しますが、流れとしては以下になります。

1.メトリクスフィルターの作成し、CloudWatchのログから特定文字列を抽出
2.メトリクスフィルターを利用してAlarmを設定

では、実際に設定していきます。

メトリクスフィルターの作成


メトリクスフィルターの設定画面の開き方がロググループなどの説明があり少し面倒なので、一番簡単な導線で記載します。

先ほど作成したLambda関数の画面から「モニタリング」タブを選択し、「CloudWatch ログを表示」ボタンを押下してください。

表示された画面から、「メトリクスフィルター」タブを押下して以下画面を表示

以下画面が表示されるので「メトリクスフィルターを作成」ボタンを押下します。

フィルターパターンに「CASAREAL_BLOG_ERROR」を入力して、「NEXT」

メトリクス値に「1」を入力して「NEXT」
※他の入力値は画像参照

最後に確認画面が表示されるので「メトリクスフィルターを作成」ボタンを押下してください。

Alarmの作成


メトリクスフィルターを作成出来たらAlarmを作成していきます。

メトリクスフィルターを作成後、CloudWatchを開いているので画面左側の「すべてのアラーム」をクリックして以下画面を表示してください。

そのままアラームを作成していきたいところですが、

作成したLambdaを一度も実行していない場合は実行してください。

実行していない場合はアラームの作成時に先ほど作成したメトリクスフィルターが表示されません。

Lambdaを実行したら、「アラームの作成」ボタンを押下し、先ほど作成したメトリクスフィルターを選択肢して以下のように入力して「 次へ」

  • 統計:サンプル数
  • CASAREAL_BROG_TEST_ERROR が次の時…:以上
  • … よりも:1

    通知アクションに先ほど作成したSNSトピックを選択し、以下のように入力して「次へ」

    以下で入力する
    「アラーム名」がメールの件名となります

    確認画面が表示されるので「アラームの作成」ボタンを押下

    メールが送信されることの確認


    作成したLambdaを実行してエラーとなったのを確認

    作成したAlarmがAlarm状態に遷移しているのを確認

    メールを受信したのを確認できました。

    まとめ


    AWSでのバッチ作成とエラー検知の手法についてのお話でした。
    本記事が少しでも誰かの助けになれば幸いです。


--------------------------
システム開発のご要望・ご相談はこちらから

try! Swift Tokyo 2025 に参加してきました

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

コメント ※

名前 ※

メール ※

サイト