1
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 1 year has passed since last update.

ハンズラボAdvent Calendar 2022

Day 11

AWS EC2インスタンスからSlackに通知を送る方法

Last updated at Posted at 2022-12-11

皆様こんにちは。

この記事は ハンズラボ 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つの手法について書かせて頂きました。
意外と通知方法は悩むことが多いのでこのような記事ではありますが、皆様のお役にたてば幸いです。

1
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
1
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?