この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
協栄情報の陸です。
やりたいこと
本日は、CloudWatch Events定時でLambda関数を自動的に起動し、Lambda処理で異常発生する場合、SNSで指定したメールアドレスにエラーメッセージを送信する方法を紹介します。
利用するサービス
- Lambda
- CloudWatch Events
- Simple Notification Service(SNS)
構成図
操作
Lambda関数の作成
該当する情報を入力し、記事の冒頭で述べた3つのサービスを運用する権限を持つものを選択します。
ここでの私の役割の権限は以下の通りです。
そして、Lambdaコードを書くことを選択します。 ここでは、インスタンスを起動するだけの簡単なものを紹介します。
ここで一つ注意したいのが 入力値は環境変数に設定されていなければならず、テスト時間には設定されていません。 環境変数から値を取得する方法は以下の通りです: os.environ["key"]
Lambdaの設定が終わったら、SNSサービスを作ってみましょう。 SNSのコンソールに行き、トピックを作成します。
スタンダードを選択し、該当する情報を入力します。
トピックを作成した後、サブスクリプションを作成します。
RAMは変更されません。プロトコルとして電子メールを選択し、ターミナルノードに電子メールを入力します。最終的に作成され、
次に、メールボックスに次のメールが届きます。クリックして確認してください
この時点で、サブスクリプションは正常に作成されています。
そしてLambdaの画面に戻り、ページを下にスクロールしていきます。 非同期呼び出しへ
次に、関連する情報を選択します。 デッドレターキュー amazon SNSを選択します。 トピック 先ほど作成したSNSを選択して保存します。
その後、CloudWatchサービスに移動し、ルールの作成を選択します。
ここでは、テストのために、スケジュールを選択します。 次のスピードは1分です。 次に、先ほど作成したLambda関数を関連付けます。
名前を入力したら、作成ルールを確認します。
最後にロググループに来て入力ログを確認します。
異常発生ない場合
環境変数から既存のインスタンスIDを入力すると、Lambdaは正常に起動できます。 次に、ログを表示できます,エラーが発生しなかったため、この時点ではSNSサービスはトリガーされませんでした
!
異常発生する場合
それでは、エラーの状況を示しましょう。 存在しないインスタンスIDを環境変数に入力します。
次にログを確認しますが、エラーが発生したため、この時点でSNSサービスを開始し、設定したメールボックスにエラーメッセージをメールで送信します。
注意
実験が完了したら、イベントのルールをオフにする必要があります。オフにしないと、
関数が引き続き開始されます。
念のため、最終的にLambdaの非同期呼び出し画面がデフォルトで変更されます。
以上。