5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Person Link newAdvent Calendar 2020

Day 24

【AWS】Lambdaの実行ログから指定した文字列を検知してslackに通知

Last updated at Posted at 2020-12-23

今回は自分が触れる機会の多いAWSのサービスを使用して運用の際などで利用できる通知方法の一つをご紹介します。

#使用サービス

  • Lambda
  • CloudWatch
  • Slack

#実装フロー
1.Lambda関数からCloudWatch Logsへログを出力
2.CloudWatch Logsから指定した文字列を検知
3.検知された文字列をトリガーにSlack通知用のLambda関数を発火
4.通知用LambdaでSlackへ文字列を通知

#フロー詳細
実際に上記のフローで実装していきます。

手順1

今回は「test」という文字列でCloudWatch Logsへ出力します。
スクリーンショット 2020-12-23 16.14.07.png

手順2

文字列検知にCloudWatch Logsのサブスクリプションフィルター(Lambda)を使用していきます。
スクリーンショット 2020-12-23 16.25.49.png

手順3

通知用Lambda関数とログ形式およびフィルターパターンを設定します
スクリーンショット 2020-12-23 16.35.33.png

手順4

環境変数「WebhookURL」には通知したいslackのWebhook URLを設定しています。

notifi.py
import json
import os
import urllib.request
import slackweb

def lambda_handler(event, context):
    decoded_data = zlib.decompress(
        base64.b64decode(event['awslogs']['data']),
        16+zlib.MAX_WBITS
    )
    json_data = json.loads(decoded_data) 
    print(json_data['logEvents'])
    for i in json_data['logEvents']:
        test = i['message'] # ログの内容
        slack = slackweb.Slack(url=os.environ['WebhookURL'])
        slack.notify(text=test)

先ほど設定した文字列を検知してslackに通知されることを確認しました。
スクリーンショット 2020-12-23 16.48.51.png

#まとめ
上記以外にも通知方法は複数ありますが、なるべく簡潔にまとめていった方が管理しやすいので簡略化できるところはどんどん楽にしていきたいですね。

5
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
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?