🔥

GCPのCloud Functionsの関数を直接実行する方法

2021/04/27に公開

結論

大きく下記の2つの選択肢があります

  • GCPのコンソール画面で「関数をテスト」を実行する
  • gcloudコマンドを実行する

※この方法はCloud Functions for Firebaseでデプロイしている関数でも同じく実現可能です。

課題

  • Cloud Functionsの関数をデプロイして、直接実行したい
  • 一度だけ実行する捨て関数を呼び出したい
  • スケジューラーやhttp callの関数を直接実行したい

GCPのコンソール画面から行う方法

  1. GCPのコンソールで任意のアカウントでログイン
  2. GCPのコンソールで任意のプロジェクトに入る
  3. GCPのコンソールで任意の環境に切り替える
  4. Cloud Functionsのページへ移動
  5. 関数の名前のリンクから「関数の詳細」へ移動
  6. 「テスト中」タブへ移動
  7. 「関数をテスト」を実行

gcloudコマンドの方法

詳しくはリンクの公式サイトで

gcloud functions call YOUR_FUNCTION_NAME --data '{"name":"Keyboard Cat"}'

https://cloud.google.com/functions/docs/calling/direct?hl=ja#using_the_gcloud_command-line_interface

エラーが出る

{"error":{"message":"Bad Request","status":"INVALID_ARGUMENT"}}
http onCallの関数を実行した時に上記のようなエラーが出た場合の対処法

  1. JSON形式で data 要素を持たせる
  2. 実行

※何も必要としていなくてもCloud Functionsの仕様上必要

{
  "data": {
    "hoge": 'ここに任意のデータを入れる',
    "fuga": 'JSONの形式で"data"要素を持ったデータを渡す必要がある'
  }
}

参考

https://cloud.google.com/functions/docs/calling/direct?hl=ja
https://stackoverflow.com/questions/49476231/how-to-call-firebase-callable-functions-with-http

Discussion