AWS LambdaからSlackにメッセージを送るBOTを作ってみよう

Lambda

概要

フェイス・ソリューション・テクノロジーズ株式会社 IS 本部 OS ユニットの masと申します。
今回はAWSのLambdaを使って、簡単なメッセージをSlackに送るアプリを作成しようと思います。

作業

Slackでの作業

appを作成する

下記にアクセスしてappを作成します。

Slack API: Applications | Slack

画面内のCreate New Appをクリックします。
表示されたウィンドウでFrom scratchをクリックします。

上記の画面では「App Name」は好きなアプリ名を入力します。
「Pick a workspace to ~」は自分のSlackのワークスペースを選択してCreate Appをクリック

ワークスペースにappをインストールする

「Scopes」よりちょっと上に「OAuth Tokens for Your Workspace」という項目がある。
Install to Workspaceボタンをクリック

権限をリクエストしていますという画面が表示されるので「許可する」をクリック

「OAuth Tokens for Your Workspace」にBot User OAuth Token というのが表示される(以下tokenと表記)
Copyボタンをおして何かに貼り付けて保管してください。
ちなみに大事な情報なので他の人に盗まれないように気を付けて管理しましょう

メッセージを送りたいチャンネルに作成したアプリをインストールする

Slackを開いてメッセージを送りたいチャンネルを右クリック

チャンネル詳細を表示するをクリック

インテグレーションタブのアプリを追加するをクリック

検索窓で自分の作成したアプリを探し追加する。
追加ができたらチャンネル詳細をもう一度開く
チャンネル情報の一番下までスクロールするとチャンネルIDが書いてあるので控えておく

ここまででSlackの作業は終わりです。

AWSでの作業

lambdaを作成する

AWSのコンソール画面で左上の検索画面に「lambda」と打ち込むと検索結果にLambdaが表示されるのでそれをクリック
Lambdaのサービス画面の右上あたり、関数の作成をクリックする。

関数名はお好きなものを入力する。

ランタイムはPython3.9を選択

右下(ちょいスクロールしないと見えてないかも)の関数の作成をクリック

コードを作成

コードのところに下記を貼り付ける。
cidは控えておいたチャンネルID、messeageは好きなメッセージを入れてもらってもOK

import json
import os
import urllib.request

def lambda_handler(event, context):
    # TODO implement
    
    cid = '控えておいたチャンネルID' #channelIDを入力する
    
    message = '好きなメッセージ' #メッセージを入力する
    
    #slackにメッセージを送る
    postMessage_to_slack(cid, message)

#Slackにメッセージを送る関数
def postMessage_to_slack(cid, message):
    
    slackAccessToken = os.environ['SLACK_ACCESS_TOKEN']
    
    url = "https://slack.com/api/chat.postMessage?pretty=1"
    
    data = {
        'channel': cid,
        'text': message
    }
    
    post_data = urllib.parse.urlencode(data)

    req = urllib.request.Request(url, data=post_data.encode())

    req.add_header('Authorization','Bearer ' + slackAccessToken)
    
    with urllib.request.urlopen(req, timeout=1) as response:
        response_data = json.loads(response.read())
        
    print(response_data)

Lambdaに環境変数を登録する

設定タブをクリックして環境変数をクリック、表示された画面の編集をクリック

環境変数の追加をクリック後、下記の内容を入力し、保存をクリック
キー → SLACK_ACCESS_TOKEN
値 → Slackで取得したtokenを入力

ここまでで準備は完了。
最後にテストタブへ移動しテストをクリックする。

Slackに作成したapp名のユーザーからメッセージが届いたら成功です。

プロフィール
この記事を書いた人
mas

IS本部オペレーションサービスユニットでサーバ監視および映像監視担当。
趣味はカラオケだけれど、コロナの為に自粛中。
AWSの資格はクラウドプラクティショナーを取得済み。
ソリューションアーキテクトアソシエイト取得に向けて勉強中。

masをフォローする
フェイスでは一緒に働く仲間を募集しています

フェイス・ソリューション・テクノロジーズ株式会社では、一緒に働いてくれる仲間を募集しています。
いろいろな案件があるので、いろいろなことに挑戦できる会社です。
「面白いこと」に積極的なので、あなたの「面白そうなことだからやってみたい」を形にできるチャンスがあります!

Lambda
フェイススタッフブログ

コメント

タイトルとURLをコピーしました