Slack / Functions FrameworkでサクッとCloud Functionsをカスタマイズ
前回の記事では、基本的な連携のみ書きました。
Slack / Google Cloud Platformと連携してスラッシュコマンドを作成する
今回はローカル環境でコードをカスタマイズして、本番にデプロイするところまで。
Node.js
まずは Node が必要です。
Google Cloud Platform のこちらの記事に詳しく解説されています。
https://cloud.google.com/nodejs/docs/setup
・NVM をインストール
・Node.js と npm をインストール
Functions Framework
Functions Framework を使うと簡単にCloud Functionの環境を用意することができます。
まずはプロジェクトの初期設定。
bash
1
2
$ npm init
$ npm install @google-cloud/functions-framework --save
同ディレクトリに index.js を作成。
helloWorld というエンドポイントを設定します。
index.js
1
2
3
exports.helloWorld = (req, res) => {
res.send('Good morning, World');
};
ローカルでサーバーを立ち上げ。
bash
1
2
3
4
5
$ npx @google-cloud/functions-framework --target=helloWorld
Serving function...
Function: helloWorld
URL: http://localhost:8080/ => localhost:8080 が立ち上がる。
ターミナルで別タブを開いて次の curl コマンドを実行。
bash
1
2
$ curl localhost:8080
=> Good morning, World
となれば成功。
便利な設定
package.json に下記を追加。
package.json
1
2
3
"scripts": {
"start": "functions-framework --target=helloWorld"
}
こうすれば、下記のコマンドだけでサーバーを実行することができます。
1
$ npm start
デプロイ
このコマンドをCloud Functionsに反映してインターネットからアクセスできるようにしましょう。
こちらで 既に gcloud
コマンドがインストールできていると思いますので、このコマンドでデプロイします。
helloWorld
で先程カスタマイズした処理を指定。
--runtime nodejs8 --trigger-http
はひとまず定形として覚えておいておけばOK。
bash
1
2
3
4
$ gcloud functions deploy helloWorld --runtime nodejs8 --trigger-http
=> httpsTrigger:
url: https://us-central1-test-project-1-xxxxx.cloudfunctions.net/helloWorld
デプロイが終わったらURLが取得できるので、
このURLをSlackのスラッシュコマンドのRequest URLに設定。
これでスラック上で /post
コマンドを実行すれば Good morning, World
と表示されるはず。
前回の記事ではCloud Functionsのデフォルトの処理を実行しましたが、今回はローカル環境で作った処理を本番に反映、そして実行する流れを書きました。