Functions Frameworkを使ってPub/SubトリガーのCloud Functionsをローカルで動かす

公開日時
更新日時

Functions Frameworkを使うとCloud Functionsをローカル環境で試せるようになる。

// index.ts
export const index = (event, context) => {
  const pubsubMessage = event.data;
  console.log(Buffer.from(pubsubMessage, "base64").toString());
};

[[package.json]]にstartスクリプトを追加。

{
  "name": "functions",
  "scripts": {
    "start": "functions-framework --target=index --source=dist --signature-type=event"
  }
}

Pub/Subのdataパラメータはbase64でエンコードする必要があるとのことで、以下のようなcurlコマンドを実行するとローカルで確認ができる。

curl -X POST -H 'Content-Type:application/json; charset=utf-8' -d "{\"data\":\"`echo -n 'pub-sub-data-sample' | base64`\"}" -H 'ce-type: xxx' -H 'ce-specversion: xxx' -H 'ce-source: xxx' -H 'ce-id: xxx' http://localhost:8080
=> pub-sub-data-sample

参考


Related #gcp

Cloud FunctionsのNode.jsバージョンを更新する

package.jsonとcloudbuild.yamlを更新

Cloud BuildでFirebase Hostingのデプロイを行う

リポジトリへのpush以外をトリガーにしたい場合に使用

Firebase HostingのデプロイをWebhook(API)経由で行う

デプロイボタンが作れるようになった

CloudRunでnode.jsを動かす

リポジトリにpushしたらCloudRun上に自動デプロイ

IPv6 IPoE環境で自宅のRaspberryPiにsshできるようにする

GCPにssh port forwardingすることで実現できた