6
3

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 3 years have passed since last update.

BoltとServerless Frameworkを使ってSlackチャットボットをAWS Lambdaで実行する

Last updated at Posted at 2020-11-30

はじめに

AWS LambdaとBoltフレームワークを使って、Slackのチャットボットを作成しました。
Bolt入門ガイドの手順では、ngrokを使ってローカルPC上にボットを起動します。
実際の運用ではローカルPC上ではなくサーバ上にアプリを起動すると思いますが、AWS環境へのデプロイ方法の詳細は記載されていないため、備忘録も兼ねて投稿します。

各種ツールやライブラリの概要

名称 概要
Slack チャットツール。アプリを作成しカスタマイズできる。
Bolt Slackアプリ開発のためのフレームワーク。
AWS Lambda AWSが提供するサーバレス環境。
Serverless Framework AWS Lambdaを始めとしたサーバレス環境にデプロイするためのフレームワーク。
ngrok ローカル環境をhttpsで公開できるサービス。開発環境として利用。

今回実行した環境

項目 バージョン
OS macOS Catalina
nodejs v10.16.0
@slack/bolt 2.0.1
Serverless Framework 1.68.0

手順

  1. Bolt入門ガイドに沿ってアプリを作成。
  2. seratch/serverless-slack-bolt-aws をテンプレートとしてアプリを作成。
  3. ngrokを使ってURLを生成、テスト。
  4. sls deployを使ってLambdaに公開。

1. Bolt入門ガイドに沿ってアプリを作成。

Bolt入門ガイドの手順に従って、Slackのアプリを新規作成します。
こちらの手順を完了すると、ローカルマシン上でボットを起動し、Slackチャンネルから応答させることができます。
上記手順ではngrokの利用方法について記載はないので、以下を参考にインストールしてください。

2. seratch/serverless-slack-bolt-aws をテンプレートとしてアプリを作成。

AWS Lambdaにコードをデプロイするために、Serverless Frameworkを使います。
npmを使ってServerless Frameworkをインストールします。

npm i -g serverless

seratch/serverless-slack-bolt-awsという便利なテンプレートが公開されていますので、こちらを使ってアプリを作成します。
以下の手順に従って、アプリのインストールとトークンの設定を行います。

上記手順で生成したhandler.jsApplication Logicというコメント箇所を、作成した自分のボットのコードで置き換えます。
.envファイルには、先の手順で使用したSLACK_SIGNING_SECRETSLACK_BOT_TOKENをそれぞれ設定ください。
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYは、デプロイ先のAWSアカウントで作成したIAMのものを利用します。

ngrokを使ってURLを生成、テスト。

以下のコマンドでローカルPCでボットを起動し確認できます。

$ sls offline

起動後、先の手順と同じようにngrokを使ってURLを生成しします。

$ ngrok http 3000

SlackアプリのEvent SubscriptionsメニューにあるRequest URLに生成したURLを入力します。
URLの末尾には/dev/slack/eventsを加えてください。
例えば以下のようなURLになります。

https://xxxxxxxx.ngrok.io/dev/slack/events

sls deployを使ってLambdaに公開。

以下コマンドでAWS環境にデプロイできます。

$ sls deploy

URLが生成されますので、ngrokの時と同様、Request URLに入力します。
Slackのチャンネルでボットが応答すれば設定完了です。

以上、Boltフレームワークで作成したSlackチャットボットをAWSにデプロイする方法でした。
現在は、個人的な利用目的でしかチャットボットを運用していませんが、AWS CodePipelineなどと組み合わせれば、Slackから運用しているサービスのデプロイなどもできると思います。
ぜひ参考いただければと思います。

参照

6
3
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
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?