はじめに
- この記事ではSlackのWebhookを利用して、AWS Lambda経由でメッセージを送るためのサンプルを記載します。
環境について
- ローカルの環境にはPython 3.6が導入済みであるものとします。
- また、対応するpipも導入されているものとします。
作成手順
フォルダ構成
- 下記のようなフォルダ構成を前提とします。
- webhook
- script.py
- 必要なライブラリ類
ライブラリの導入
- ライブラリとしてslackweb(https://pypi.python.org/pypi/slackweb)を利用します。
- lambdaで外部のライブラリを利用する場合、ソースコードと依存するライブラリを1つのzipにまとめる必要があります。
- そのため下記のように、これから書くソースコードと同じディレクトリにライブラリをインストールします。
$ pip3 install slackweb -t .
ソースコードの作成
- 下記のような感じでコードを書きます。
script.py
# slackwebをインポート
import slackweb
# lambdaの処理するhandlerを作成
def lambda_handler(event, context):
# urlでは取得済みのWEBHOOK URLを入力
slack = slackweb.Slack(url="YOUR WEBHOOK URL PUTS HERE")
# メッセージは適当。チャンネル名、ユーザ名も適宜修正すること。
slack.notify(text="Hello, World!!", channel="#YOUR CHANNEL HERE", username="USERNAME HERE", icon_emoji=":smiling_imp:")
return "succeeded"
zipの作成
- zipを作成するときは、親となるディレクトリを含んではいけない点に注意します。
- macであれば親ディレクトリでなく、全てのファイルを選択した状態で圧縮すればOKです。
Lambdaのデプロイ
- 基本はそのまま進めていけば難しいことはありませんが、ハンドラのところはファイル名.ハンドラ名にする必要がありますので、今回であればscript.lambda_handlerを指定してください。
- ここまで終わればあとは実行するだけです!
終わりに
- ここまでできれば他のAWSサービスと組み合わせたり、コードを拡充するのは簡単ですね!
- これをベースにbotや処理ツールなどを作成し、素敵なslack生活を送りましょう!僕も頑張ります笑