
【実践】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トピックを選択し、以下のように入力して「次へ」
確認画面が表示されるので「アラームの作成」ボタンを押下
メールが送信されることの確認
まとめ
AWSでのバッチ作成とエラー検知の手法についてのお話でした。
本記事が少しでも誰かの助けになれば幸いです。