0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

LambdaのエラーログをCloudWatchで検知しSNSでメール通知を実装する

Posted at

はじめに

本記事ではLambda、CloudWatch、SNSを利用してエラーを通知を行います。
CloudWatchに出力されるLambdaのログにおいて、Errorログが吐かれた際にはそれをトリガーとし、対象のメールアドレスに通知を送付します。

環境

Python:3.12

Lambda関数の作成

loggingモジュールを使用して、意図的にエラーを起こすLambda関数を作成します。

lambda_function.py
import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO)

def lambda_handler(event, context):
    try:
        logger.info("This is an info message.")
        
        # 意図的にエラーを発生
        raise ValueError("Output an error message.")
    except Exception as e:
        logger.error(f"An error occurred: {e}")
        raise e

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

CloudWatch > ロググループ から対象のLambda関数のロググループを選択します。
メニューから「メトリクスフィルターの作成」をクリック。
今回はERRORログに吐かれる事をトリガーにしたいので、フィルターパターンに ERROR を入力し次へ進みます。

image.png

メトリクスの詳細では任意の名前と値を記入しメトリクスを作成します。

image.png

SNSトピックの作成

通知先の設定のためSNSからトピックを作成します。

image.png

通知先のメールアドレスを設定します。
サブスクリプション > サブスクリプションの作成 から次のように選択。

  • トピックARN:上記で作成したリソースのもの
  • プロトコル:Eメール
  • エンドポイント:任意のメールアドレス

サブスクリプションを作成後、設定したメールアドレスに認証通知がくるので、Confirm subscription から登録しておきます。

image.png

CloudWatchアラームの作成

CloudWatch > ロググループ から対象のLambda関数のロググループを選択します。
メトリクスフィルターメニューから対象のフィルターにチェックを入れ、「アラームを作成」をクリック。

image.png

任意のメトリクス名を設定します。

image.png

image.png

通知の送付先にはSNSで作成したトピック名を指定します。

image.png

動作確認

Lambdaをテスト実行し意図的にエラーをだしてみると、1分後くらいにメールが届いている事を確認できました。
CloudWatch > アラーム から対象のアラーム名を選択し、履歴メニューからも正常にアラームが実行されいている事を確認できます。

image.png

設定したメールアドレスに通知が来ないときは、SNSの暗号化の影響の可能性があります。

参考:https://dev.classmethod.jp/articles/tsnote-sns-topic-policy-encryption-cloudwatch-001/

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0