SNSよりLambdaの実行状況を監視する方法


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

協栄情報の陸です。

やりたいこと

本日は、CloudWatch Events定時でLambda関数を自動的に起動し、Lambda処理で異常発生する場合、SNSで指定したメールアドレスにエラーメッセージを送信する方法を紹介します。

利用するサービス

  • Lambda
  • CloudWatch Events
  • Simple Notification Service(SNS)

構成図

file

操作

Lambda関数の作成
該当する情報を入力し、記事の冒頭で述べた3つのサービスを運用する権限を持つものを選択します。
file
ここでの私の役割の権限は以下の通りです。
file
そして、Lambdaコードを書くことを選択します。 ここでは、インスタンスを起動するだけの簡単なものを紹介します。
file
ここで一つ注意したいのが 入力値は環境変数に設定されていなければならず、テスト時間には設定されていません。 環境変数から値を取得する方法は以下の通りです: os.environ["key"]
file

Lambdaの設定が終わったら、SNSサービスを作ってみましょう。 SNSのコンソールに行き、トピックを作成します。
file
スタンダードを選択し、該当する情報を入力します。
file
トピックを作成した後、サブスクリプションを作成します。
RAMは変更されません。プロトコルとして電子メールを選択し、ターミナルノードに電子メールを入力します。最終的に作成され、
file
次に、メールボックスに次のメールが届きます。クリックして確認してください
file
file
この時点で、サブスクリプションは正常に作成されています。
file
そしてLambdaの画面に戻り、ページを下にスクロールしていきます。 非同期呼び出しへ
file
次に、関連する情報を選択します。 デッドレターキュー amazon SNSを選択します。 トピック 先ほど作成したSNSを選択して保存します。
file
その後、CloudWatchサービスに移動し、ルールの作成を選択します。
file
ここでは、テストのために、スケジュールを選択します。 次のスピードは1分です。 次に、先ほど作成したLambda関数を関連付けます。
file
名前を入力したら、作成ルールを確認します。
file
最後にロググループに来て入力ログを確認します。
file

異常発生ない場合

環境変数から既存のインスタンスIDを入力すると、Lambdaは正常に起動できます。 次に、ログを表示できます,エラーが発生しなかったため、この時点ではSNSサービスはトリガーされませんでした
!file

異常発生する場合

それでは、エラーの状況を示しましょう。 存在しないインスタンスIDを環境変数に入力します。
file
次にログを確認しますが、エラーが発生したため、この時点でSNSサービスを開始し、設定したメールボックスにエラーメッセージをメールで送信します。
file

注意

実験が完了したら、イベントのルールをオフにする必要があります。オフにしないと、

関数が引き続き開始されます。
念のため、最終的にLambdaの非同期呼び出し画面がデフォルトで変更されます。

以上。

Last modified: 2024-02-05

Author