/ #AWS #slack 

Slackの匿名BotをAWSで作る

もくじ

今回作るもの

はい👻

今回作るものは「匿名SlackBot」です。これまではDockerを省略してたのですが、今回まじめに書いたので構成図の要素が結構多いです笑

「Slack bot 匿名」とか検索するとたぶんたくさん出てくると思いますが、軽く説明します。

Slackの特定のチャンネルに対して、匿名で発言してくれる。Botです。

具体的には。。。

アプリにDMを送ると。。。

自分の代わりに別チャンネルでつぶやいてくれます

そんなbotです

前提

  1. AWSのアカウントを持っている
  2. アプリをインストールできる権限のあるSlackのワークスペースを持っている
  3. git、Dockerが導入済み。

では 作っていきましょう👻

まず全体ステップを確認します。

  1. ServerlessFrameworkでアプリケーションをデプロイして、API Gatewayのエンドポイントを取得する
  2. Slackにアプリを新規で作成し、サブスクライブに上記で作ったエンドポイントを登録する。またSlackのトークンを取得する
  3. 上記のトークンをaws-cliでSSM Parameter Storeに登録する。 
  4. 動作確認

長いですね。なので説明はなるべく簡素にします。

ステップ1

ソースコードはこの文字列をクリック

gitからコードを取ってきて、初期化処理します。具体的には下記のコマンド叩いてください。

$ git clone https://github.com/sisi100/slack-bot-anonymous
$ cd slack-bot-anonymous
$ make init

$ make initが何をしているか? はMakefileを開くとわかりますが、 サンプルをコピーして下記2ファイルが生成するだけです。

  1. .env.aws-credentials
  2. .env.slack_token

.env.aws-credentialsにAWSのアクセスキーとシークレットキーを記入して、下記コマンドを叩いてください。

$ make deploy

上記のコマンドはdockerのコンテナ内でsls deployを叩くだけです。

さて、デプロイが終了しましたら、アプリケーションのデプロイが完了です!

次にデプロイしたアプリケーションのエンドポイントを取得します。

マネージメントコンソールからAPI Gatewayのコンソールを開きます。

作成されたAPI名をクリック

①をクリックして、②をクリックして、③のエンドポイントをコピーしてください。

完了!!

ステップ2

Slackの設定です。

SlackAPIから「Start Building」クリック

適当な名前とワークスペースを指定して「Create App」クリック

再度メニューにから「Event Sbscription」クリック

Enable Events」をONにしてステップ1でコピーしたエンドポイントRequest URLへペースト

下にスクロールして下記のイベントを追加して「Save Changes」

サイドメニューから「OAuth & Permissions」クリック

下記のような設定にして

下記のような設定にして

サイドメニューの「Insatall App」の項目からアプリをインストールし、

OAuth Access TokenBot User OUth Access Tokenをコピーする。

ステップ3

ソースコードに戻って、.env.slack_tokenを開きます。下記のようなファイルです。

SLACK_BOT_USER_ACCESS_TOKEN=xoxb-xxxxxxxxxxxxx-xxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx
SLACK_APP_AUTH_TOKEN=xoxp-xxxxxxxxxxxxx-xxxxxxxxxxxxx-xxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

今適当に「xxxxxx」とトークンが入っていますが、 ここにコピーしてきたOAuth Access TokenBot User OUth Access Tokenをペーストしてください。

次に下記コマンドでトークンをSSM Parameter Storeへ登録する。

$ make set_token

ステップ4

動作確認 !

左側からアプリ名を選択。(私の場合作成したSlackアプリ名が「workerdevelop」でした。過去に別用とで作ったアプリを使いまわしたので名前が変です)

※ 皆さんはそれぞれ名付けたSlackBot名が表示されているはず。

SlackBotに向かってDMを投げます。

#generalチャンネルにSlackBotが呟きました。

動作確認完了です。

削除方法

Stackの削除

$ make remove

SSM parameter storeの削除

SSMのコンソールから「パラメータストア」をクリックし、作成したパラメーターを選択し、「削除」クリック

以上です👻

お疲れさまでした!!

Author

Sisii

インフラが好きなエンジニアぶってるなにか