MENU

gcloud コマンドで Cloud Functions(第 2 世代)をデプロイするときのオプションまとめ

更新内容
  • UPDATE2022-03-29:第 2 世代関数(ベータ版)の内容に変更しました。
  • CREATE2021-10-01:記事を公開しました。

この記事では、コマンドライン(gcloud)から第 2 世代関数をデプロイするときのオプションをまとめて紹介しています。

第 2 世代関数をデプロイするためには、Cloud Build API の他にも Cloud Run Admin APIArtifact Registry API を有効化する必要があるので、忘れずに有効化しておきましょう。

# Cloud Build APIを有効化
$ gcloud services enable cloudbuild.googleapis.com

# Cloud Run Admin APIを有効化
$ gcloud services enable run.googleapis.com

# Artifact Registry APIを有効化
$ gcloud services enable artifactregistry.googleapis.com
目次

HTTP トリガー

$ gcloud beta functions deploy FUNCTION_NAME \
--gen2 \
--trigger-http \
--allow-unauthenticated \
--region=asia-northeast1 \
--runtime=python39 \
--source=. \
--entry-point=main
  • --gen2:第 2 世代関数
  • --trigger-http:HTTP トリガー
  • --allow-unauthenticated:パブリック関数に変更、すべての呼び出しを許可する
  • --region:リージョンを指定
  • --runtime:Python の場合、python38python39から選択する
  • --source:デプロイするディレクトリを指定、.が指定されるとカレントディレクトリ
  • --entry-point:Cloud Functions が実行されたときに一番最初に実行される関数の名前

イベントトリガー

Cloud Pub/Sub トリガー

$ gcloud beta functions deploy FUNCTION_NAME \
--gen2 \
--trigger-topic=<TOPIC_NAME> \
--region=asia-northeast1 \
--runtime=python39 \
--source=. \
--entry-point=main
  • --gen2:第 2 世代関数
  • --trigger-topic:Pub/Sub が実行されるトピックの名前
  • --region:リージョンを指定
  • --runtime:Python の場合、python38python39から選択する
  • --source:デプロイするディレクトリを指定、.が指定されるとカレントディレクトリ
  • --entry-point:Cloud Functions が実行されたときに一番最初に実行される関数の名前

Cloud Storage トリガー

$ gcloud beta functions deploy FUNCTION_NAME \
--gen2 \
--trigger-event=google.storage.object.finalize \
--trigger-resource=<BUCKET_NAME> \
--region=asia-northeast1 \
--runtime=python39 \
--source=. \
--entry-point=main
  • --gen2:第 2 世代関数
  • --trigger-event:GCS でトリガーされる4つのトリガーのいずれかを指定
    • google.storage.object.finalize:新しいオブジェクトが作成されたとき
    • google.storage.object.delete:オブジェクトが削除されたとき
    • google.storage.object.archive:オブジェクトがアーカイブまたは削除されたとき
    • google.storage.object.metadataUpdate:オブジェクトのメタデータが更新されたとき
  • --trigger-resource:GCS のバケット名
  • --region:リージョンを指定
  • --runtime:Python の場合、python38python39から選択する
  • --source:デプロイするディレクトリを指定、.が指定されるとカレントディレクトリ
  • --entry-point:Cloud Functions が実行されたときに一番最初に実行される関数の名前

その他のオプション

環境変数をセットする

--env-vars-file=.env.yaml

すべての環境変数の定義を含む YAML ファイルへのパスを指定します。

ACCESS_TOKEN: **********************
LOGIN_ID: **********************
LOGIN_PW: **********************

タイムアウトする時間を変更する

--timeout=60s

デフォルトは 60 秒。60 秒以上かかる処理を実行したい場合に設定します。

第 2 世代関数では、HTTP 関数で最大 60 分、イベント関数で最大 10 分までの処理を実行できるようになりました。

第 1 世代関数では、HTTP 関数・イベント関数ともに最大 9 分まででした。

メモリを変更する

--memory=256MB

デフォルトは 256MB。スクレイピングやデータ処理などの重たい処理を行うときに設定します。

第 2 世代関数では、128MB、256MB、512MB、1024MB、2048MB、4096MB、8192MB、16384MB の値を設定できるようになりました。

第 1 世代関数では、最大 8192MB のメモリを使用することができました。

デプロイするファイル・フォルダを制限する

gcloudコマンドではないですが、デプロイするフォルダと同じ階層に.gcloudignoreファイルを作成しておくと、デプロイするファイルやディレクトリを指定することができます。

*
!.
!main.py
!requirements.txt

このように.gcloudignoreファイルを設定すると、main.pyrequirements.txtしかデプロイされません。

余談ですが、$ gcloud meta list-files-for-uploadコマンドを実行すると、デプロイされるファイルやディレクトリがコンソールに出力されます。

参考

この記事が気に入ったら
フォローしてね!

シェアしていただけると励みになります
  • URLをコピーしました!

コメント

コメントする

目次
閉じる