Slack / Functions FrameworkでサクッとCloud Functionsをカスタマイズ

Shunsuke Sawada

前回の記事では、基本的な連携のみ書きました。
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に設定。

workabroad

これでスラック上で /post コマンドを実行すれば Good morning, World と表示されるはず。

Screen_Shot_2019-09-03_at_0.04.01

前回の記事ではCloud Functionsのデフォルトの処理を実行しましたが、今回はローカル環境で作った処理を本番に反映、そして実行する流れを書きました。

  

Shunsuke Sawada

おすすめの記事

エンジニアの人いろいろ
Slack / Google Cloud Platformと連携してスラッシュコマンドを作成する
Slack / ローカルの開発環境を整える