gcloudからのcloud functions操作メモ


認証

gcloud auth login

プロジェクト作成

gcloud config configurations create <任意の設定名>
gcloud config set project <gcp上のプロジェクト名>
gcloud config set account <gcpのアカウント>

プロジェクトの切り替え

gcloud config configurations list  ##設定名の確認
gcloud config configurations activate <切り替え先の設定名>
##変更後、listで対象の設定のIS_ACTIVEがTrueになっていることを確認

このあたりの参照元:gcloud でプロジェクトの切り替え設定

functionの確認

##対象のプロジェクトに入ってる状態で
gcloud functions list

functionのダウンロード

既に作成されてるfunctionをダウンロードしてくるコマンドはないっぽい。(2019年1月現在)
なのでGUIからZIPをダウンロードしてくる。

functionのデプロイ

初回/ランタイムとトリガーの指定が必須
gcloud functions deploy <function name> --region=<デプロイ先region> \
--runtime <ランタイム> \
[FLAGS...]

例)
gcloud functions deploy test_function_1 --region=asia-northeast1 \
--runtime nodejs8 \
--trigger-http \
--memory=512MB \
--entry-point=exported_function \
--allow-unauthenticated

指定しなかったオプションについてはデフォルト値で作成される。
--entry-pointについてはプロジェクト名と同じFunctionで検索されるので、違う関数名にしてる場合はちゃんと指定してあげないとエラーになる。
外部公開するFunctionの場合は、--allow-unauthenticatedを指定する。
※CloudFunctions起動元にallUsersを追加するオプション。昔はデフォでついてたけど最近デフォでは認証が必要になった。
各オプションのデフォルト値や、記載以外のオプションについては公式参照のこと。

アップロードファイル構成例(nodejsの場合)
.
├ index.js       //コード
├ package.json   //必要なパッケージ
├ .env.yaml      //環境変数を記載
└ .gcloudignore  //uploadしないファイルを指定(yamlファイルとか。自身も無視でOK)

2回め以降のアップデートでは必要なオプションのみ記載すればOK。
ただし、もしデフォルトregion以外で作成してた場合は、--regionオプション必須。
CloudFunctionはFunction名/regionで一意に判別してるっぽい。

2回目以降のアップデート例
gcloud functions deploy <function name> --region=<region> [FLAGS...]

なお、Current Directory以外のファイルをアップしたい場合は--source=PATHで指定必須。

環境変数の指定

1個1個指定もできるが、yamlで書いて--env-vars-file=FILE_PATHでアップするのが良さそう。
既存の環境変数はすべてクリアされるので注意。