全然まとまった日本語情報が見つからないので、一応未来の自分のためにメモしておく。
という記事を書こうと思ったら、ほぼここにまとまってることに気が付いた。けど書く。
結構deployするのに時間かかるので、できればローカルで実行したいよね、というお話。
いろいろ調べたら、ここ(HTTP 関数のテスト | Google Cloud Functions に関するドキュメント)がまとまってて読みやすいことに気が付いたので、そちらを読んだほうが良いかもしれない。
コマンドラインツールgcloud
デプロイとか関数のテストとかがコマンドラインからできるツール。おそらくGoogle Cloud Functionsの開発やるならほぼ必須だと思う。
リンク:gcloud コマンドライン ツールの概要 | Cloud SDK のドキュメント | Google Cloud
まあ、詳細はドキュメントを参照するとして、代表的なコマンドをいくつか…
関数の呼び出し
gcloud functions call [関数名]
関数の呼び出しができる。 GETのパラメータの渡し方がわからなかった。
認証用トークンの取得
gcloud auth print-identity-token
リンク:開発者、関数、エンドユーザーの認証 | Google Cloud Functions に関するドキュメント
関数を実行するとき、たいていはIAM認証用のトークンが必要なのだが、それをとってきてくれるコマンド。 例えばsubprocessと合わせて、次のようなことが出来る。 これを応用すれば自動テストも可能かもしれない、知らんけど。
url = "関数のURL" token = subprocess.run(["gcloud", "auth", "print-identity-token"], shell=True, stdout=subprocess.PIPE).stdout.decode()[:-2] # 最後の改行コードを除く r = requests.get(url, headers={"Authorization": "bearer " + token}) if r.status_code != 200: raise Exception("Communication Error!") with open("1.pickle", "wb") as f: f.write(r.content)
デプロイ
gcloud functions deploy (関数名)
リンク:gcloud functions deploy | Cloud SDK のドキュメント | Google Cloud
カレントディレクトリ(もしくはオプションで指定したディレクトリ)をまるごとデプロイしてくれる。
Python用エミュレーターfunctions-framework
エミュレーター。pipで入れられる。
日本語の情報だと、ここ:GCPのCloud Functionsをローカルでも走らせる方法 | ハックノートとかが参考になるかもしれない。
以上。