サイトアイコン teckback

LambdaのエラーをSlackに通知

Lambdaで定期実行するプログラムが、たまに落ちていることが有ります。
気づくまで放置状態になってしまうので、Slackに通知するように設定しました。

実現したいこと

Lambdaの定期実行で、本ブログの実績だったりを定期的にSlackにレポートしています。
これがたまに落ちていることがありまして、、、その場合、だれかが気づくまで放置になっちゃうんです。

なので、Lambdaの実行でエラーになったら、Slackにその旨通知しましょう!

ってのが、今回の目標です。

前提

全体の構成

ざっくりとこんな感じです。

Lambda

CloudWatch (エラーを拾います)

AWS SNS (通知を受け渡し)

AWS Chatbot (Slackに通知します)

Slack

設定していきます

AWS SNS

AWS SNS(Simple Notification Service)に、遷移してください。

まず先に、SNSトピックと呼ばれる物を作成しておきます。トピックの作成をクリック。

タイプの所は、スタンダードを選択します。
名前・表示名を入力
他はデフォルトで、トピックの作成ボタンをクリック

できました。

CloudWatch

CloudWatchに遷移して、左のメニューのアラーム → 全てのアラーム

そして、アラームの作成をクリック

メトリクスの選択をクリック

今回は、Lambdaのエラーを拾うので、Lambdaをクリック

そして、リソース別をクリック

登録している関数分、ズラーっと表示されますので、そのうち通知したい物にチェックをいれます。
今回は、エラー時に通知したいので、エラーのレコードにチェックを入れ、メトリクスの選択ボタンをクリック

統計を合計
期間を1分
に変更

Errorsが次の時… を以上
…よりもを、1
そして、次へ

通知の追加をクリック

通知の送信先の箇所で、ボックスをクリックすると、先ほど設定したSNSトピックが表示されるので、それを選択。
そして、下の方にある次へをクリック

分かりやすい、アラーム名と説明を記入して次へ

プレビューが表示されるので、確認してアラームの作成ボタンをクリック

AWS Chatbot

AWS Chatbotに移動して、ください。
ここでは、受け取った通知をSlackに通知します。

トップ画面右の、チャットクライアントでSlackを選択。そして、クライアントを設定ボタンをクリック

Slackとの連携認証をおこないます。

Slackにログインした状態だと、そのワークスペースが表示されるかと思います。通知したいのが別のワークスペースの場合は、右上のドロップダウンから通知したいワークスペースに変更してください。そして、許可するをクリック

承認が終了すると下の画面になるので、新しいチャネルを設定ボタンをクリック。

設定名は分かりやすい物を入力してください。
Slackチャネルで、通知したいチャネルを選択
そして

IAMロールはデフォルトで表示されている「テンプレーをを使用してIAMロールを作成する」で
ポリシーテンプレートも、デフォルトのままで

SNSトピックのリージョンは、AWS SNSで作成したリージョンを選択。
そうすると、下のトピックで作成したトピックが選択できるはずです。
そして、設定ボタンをクリック

お疲れ様でした。以上で設定は終了です。

通知を確認

Lambdaでエラーを出してみてください。

Slackの指定したチャネルに、下記のような通知が来ることが確認できるはずです。

モバイルバージョンを終了