Google Cloud Functionsをローカルで実行する


公式のドキュメントでは2019年9月4日現在、cloud-functions-emulator をインストールして使うように記載されていますが、cloud-functions-emulatorは現在archiveされており、公式のgithubにて2019年5月16日に作成されたissueによると functions-framework という新しいツールの利用を推奨しています。

なので、functions-frameworkをインストールして使っていきます。

インストール

公式で案内されているのは下記です。

$ npm install @google-cloud/functions-framework

私はYarnを利用しているので下記でインストールしました。

$ yarn add @google-cloud/functions-framework

バージョンについて

node.js v8.10.0でインストールしたところ、

error @google-cloud/[email protected]: The engine "node" is incompatible with this module. Expected version ">=10.0.0". Got "8.10.0"

>=10.0.0ですよーと怒られたのでv10.16.3で入れました。

yarn add v1.17.3
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 🔨  Building fresh packages...

success Saved lockfile.
success Saved 28 new dependencies.
info Direct dependencies
└─ @google-cloud/[email protected]
info All dependencies
├─ @google-cloud/[email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
└─ [email protected]
✨  Done in 1.06s.

つらつらーとログが流れて、インストール完了!

確認

index.jsファイルを作成して、nodeサーバーを立ち上げて確認します。

index.js

exports.helloWorld = (req, res) => {
  res.send('Hello, World');
};

index.jsを作ったら、コマンドを叩きます。

$ npx @google-cloud/functions-framework --target=helloWorld
Serving function...
Function: helloWorld
URL: http://localhost:8080/

こんな感じでサーバーが立ち上がったら、http://localhost:8080/を見てみましょう。

無事、Hello Worldできました! Congratulations!

まとめ

公式のドキュメントも時には疑ってかからなければならないことを学びました。
そして、最新の情報はgithubにあり!
もっと言うと、コードにあり!!

参考:
functions-framework を利用したGoogle Cloud Functionsにおいてpubsubのテストをする方法