🍤
LambdaとAurora Serverlessでユビキタス言語管理用のSlack Botを作ってみた
はじめに
チームに新しいメンバーが増えると、チームで利用されている言語の理解が難しいという声が毎回上がってきていました
共有フォルダにスプレッドシートで管理する
や Slackにチャンネルを作りそこに溜めていく
という案が出されたものの、いつの間にかメンテナンスされなくなり、また新しいメンバーが入って来た時に同じ問題が掘り起こされるという状態でした
そんな中で、こちらの記事を見つけ、自分のいるチームでもやってみようと思ったのがきっかけです
また、BoltやAurora Serverlessを勉強する良い機会だなと思ったのもモチベーションに繋がりました
できたもの
Slackのコマンドとして呼び出す
存在しないキーワードの場合は登録ボタンが表示されます
キーワードの登録用のモーダルの表示
登録完了
登録したキーワードの場合は、編集と削除ができます
あいまい検索にも対応しています
設計図
利用した主な技術
-
Bolt
- Slack API を使いやすくするための Node.js フレームワーク
-
serverless-express
- Boltからリクエストを良しなに吸収してくれるミドルウェア(Lambda上で動かしています)
-
Serverless Stack
- IaCツール。CDKのラッパーで、ローカル環境での開発に便利。
-
Aurora Serverless
- リクエストが来ない時は自動でインスタンスを一時停止してくれるので、コスト面でGood
Serverless Stackを利用したデプロイ
git clone https://github.com/tabio/slack-bot-ubiquitous.git
cd slack-bot-ubiquitous
npm install
npx sst deploy # AWSの設定を事前に行っておく必要あり
Slackアプリを使うための準備
Boltを利用するためにトークンやコマンド利用設定が必要になります
Signing Secretの取得
Basic InformationのApp Credentialsの中にあります
Bot User OAuth Token
OAuth & Permissionsの中にあります
SlackからAPI Gatewayにリクエストできるようにする
API Gatewayのエンドポイントを入力してSlackとBoltがやり取りできるようにします
Interactivity & Shortcuts
Event Subscriptions
DBの準備
Aurora ServerlessへはAWS Console -> RDS -> クエリエディタ を使って接続します
ユビキタス言語登録用のテーブルを作成します
おわりに
AWS環境上で動くSlackアプリを作成することができました
Slack上での設定が色々あり大変だったこともあり、今回備忘録がてら記事化してみました
気になるところとしては、Aurora Serverlessを利用しているため、リクエストが無いとDBが止まってしまいます
そのため、使いたい時に直ぐ使うことができない場合があります
そこは、実際に運用してみてRDSのインスタンスに切り替えるか検討してみたいと思います
その他
こちらにソースコードをおいておきましたので良かったら見てやってください🙏
Discussion