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 Runのコールドスタートを避けるためにcurlで起こし続ける

定期リクエストを送っている間はコールドスタートは発生していないことが確認できた

GCP VMインスタンスのSSHポートを変更した

Network Internet Egress from Americas to EMEA

[Action Required] Free Container Scanning ends

お試しで使っていたコンテナイメージの脆弱性スキャンを無効にした

GCPの無料インスタンスがF1-microからE2-Microに変わった

メールが来ていたのを見落としていた

[Action Required] Internal error has affected services in Cloud Run that use Cloud Load Balancing

デフォルトURLで利用している場合は対応不要

ローカルディレクトリをCloud Storageに同期する

gsutil rsyncを利用した