SakuraWi - BLog

WEBエンジニア。聴いたお話をまとめておく倉庫的な。スタックストックスタック!

【AWS lambda】chat botを使ってエラーをslackに通知させる方法


「AWS lambdaが実行中に失敗したら通知させたい!」

なんてことを思っているそこのエンジニアのあなた。

この記事を読めばあっという間に設定することができます。

ということで、今回は新しく追加された AWSchat botを利用して、slackに通知させてみたいと思います。

slackを用意する

ワークスペースがない場合は追加しましょう。

既存のワークスペースがある方は問題ないです。

全体の流れのイメージ

構成はこんな感じですね。

f:id:Saku-Saku:20200516162617p:plain
構成図

lambdaのエラーをcloud watchで検知。

SNSに投げて、それをchat botが拾って指定したチャンネルで通知。

Amazon SNSでトピックを作成

まずはSNSのトピックを作成します。

f:id:Saku-Saku:20200516163003j:plain

適当にわかる名前であとはデフォルトのままでOKです。

暗号化については暗号化するとうまく動作しなかった?ので、 暗号化の無効化のままでやってます。

chat botを作成、連携

chat botを利用開始します。

AWS サービスからchat botを探すか、ググりましょう。

開始するとチャットクライアントを選択するので、slackを選びます。

するといつもの権限リクエストの画面に。

ワークスペースを選んで連携します。

たったこれだけでOK!

chat botの設定をする

f:id:Saku-Saku:20200516163349j:plain

chat botで設定をします。

f:id:Saku-Saku:20200516164006p:plain
設定の注意点

下記、項目ごとに説明します。

Amazon CloudWatch Logs にログを発行する

Amazon CloudWatch Logs にログを発行する

これにチェック入れるとlogを残してくれるみたいです。

チャンネル

slackの通知するチャンネルを選びます。

privateでも可能。

privateだと、

/invite @aws

のコマンドで招待しておく必要がありそうです。

アクセス許可

既存のIAMは基本的にないと思うので、テンプレートを使用してIAMロールの作成で良いと思います。

ようは、「通知のアクセス許可」がついていればOKです。

通知

ここで先ほど作成したSNSトピックを選択します。

regionを選択すると、さっきつくったトピックが選べるはずです。

SNSトピックでサブスクリプションを選ぶ

この後に、再度トピックの設定画面へ。

するとchat botの設定をするといったflashが上部にでているのでクリック。

f:id:Saku-Saku:20200516164542j:plain

上記のように設定されていればOKだと思います。

cloud wathのアラーム設定

アラームの設定を追加していきます。

f:id:Saku-Saku:20200516164700j:plain

メトリクスは検知するスコープみたいなものです。 何の状態を検知するの?って感じ。

f:id:Saku-Saku:20200516164813j:plain

今回はlambdaなのでこれを選びます。

lambda -> 関数別 -> 関数名(メトリクス名:エラー)

で選ぶとよいです。

1つ選択したらメトリクスの選択をクリック。

f:id:Saku-Saku:20200516165042j:plain

条件はエラーが一個でも起きたら、というふうに設定してみました。

呼び出し回数でも設定できますね。

異常な回数のlambdaが発火されたら通知としておくと、請求が怖くないかもです。

で、最後に通知先の設定です。

f:id:Saku-Saku:20200516165350j:plain

さきほど作ったSNSがあるので、既存のSNSトピックの選択から、名前が候補にでてくるので選びます。

これで準備OKです!

確認する

lambdaの関数でテストなどでエラーを発生させると無事、slackに通知させることができます。

チェックができればあとはそのままで問題なしです。

参考

http://blog.serverworks.co.jp/tech/2020/04/26/aws-chatbot-now-generally-available/