皆様こんにちは。
この記事は ハンズラボ AdventCalendar2022 11日目です!
宜しくお願い致します。
はじめに
最近システム開発をする上で監視システムの重要性を改めて痛感する今日このごろですが、
今回は監視システムを入れるほどではないけどエラーをSlackに通知したい!
そんな需要がたまにあったりするので今回はぱっと調べた限りの手法を紹介できればと思います。
前提
今回の手法では全てSlackのWebhook URLが必要になります。
事前にSlack App等で取得をお願いします!
EC2 → Lambda → Slack編
Lambda Pythonコード
import urllib3
import json
http = urllib3.PoolManager()
def lambda_handler(event, context):
url = "Webhook URL"
msg = {
"text": event.get('message'),
}
encoded_msg = json.dumps(msg).encode('utf-8')
http.request('POST', url, body=encoded_msg)
AWS CLI実行
aws lambda invoke --function-name <Lambda Name> --payload '{ "message": "TEST MESSAGE" }' response.json
※ EC2にLambdaを実行する権限は予め設定をお願いします。
EC2 → Slack編
Python3
事前導入パッケージ
- Python3
- pip3
※今回はAL2を利用しているのでPython3系が入っているのでそれをそのまま利用
pip3 install slackweb
import slackweb
slack = slackweb.Slack(url="Webhook URL")
slack.notify(text="Test Notification")
シェルスクリプト
# /usr/bin/bash
WEBHOOK_URL="Webhook URL"
MESSAGE="Test Notification"
FORM="{\"text\": \"$MESSAGE\"}"
curl -X POST -H 'Content-type: application/json' --data "${FORM}" "${WEBHOOK_URL}" > /dev/null
さいごに
当初はEC2→SNS→Chatbotを利用した方法も検討していたのですが、こちらは通知元のサービスが限定されているなど制約も多かったので、
オーソドックスであろう3つの手法について書かせて頂きました。
意外と通知方法は悩むことが多いのでこのような記事ではありますが、皆様のお役にたてば幸いです。