[GCP]gcloudコマンドを使ってcloud functionsをデプロイする

ターミナルからfunctionsのデプロイが出来るのでGCP consoleを使わずとても便利。
ランタイムはpython3.7を使用している。

プロジェクトの設定

現在設定されているプロジェクトは下記のコマンドで確認できる。

$ gcloud config list
[compute]
region = asia-northeast1
[core]
account = hoge@mail.com
disable_usage_reporting = True
project = hoge-project

プロジェクトを変更したい場合は下記のコマンドで変更する。

$ gcloud config set project [project_name]

cloud functionsのデプロイ

今回はstorageへのファイルアップロードをトリガーとする関数を作成した。
幾つかオプションが必要だが最終的に下記のコマンドでのデプロイを実施している。

$ gcloud beta functions deploy function_name --trigger-bucket=bucket_name --source=. --runtime=python37 --region=asia-northeast1 --memory=2048MB --timeout=500

使用したオプションは下記。

  • --trigger-bucket:トリガーに使用するバケット名を指定
  • --source:デプロイ対象のファイル。カレントディレクトリの場合は.を指定
  • --runtime:使用する言語ランタイムを指定
  • --region:使用リージョンを指定
  • --memory:割り当てるメモリを指定。最大値は2048MB。MB単位での指定が必要になる。デフォルトは256MB
  • --timeout:タイムアウトまでの秒数を指定。最大値は540秒。デフォルトは60秒

バケットをトリガーにするとデフォルトで「ファイナライズ(新規作成)された時」が設定される。
その他のイベントをトリガーにしたい場合は--trigger-eventで設定する。またイベントのタイプは下記のコマンドで取得する。

$ gcloud functions event-types list
EVENT_PROVIDER                   EVENT_TYPE                                                EVENT_TYPE_DEFAULT  RESOURCE_TYPE       RESOURCE_OPTIONAL
cloud.pubsub                     google.pubsub.topic.publish                               Yes                 topic               No
cloud.pubsub                     providers/cloud.pubsub/eventTypes/topic.publish           No                  topic               No
cloud.storage                    google.storage.object.archive                             No                  bucket              No
cloud.storage                    google.storage.object.delete                              No                  bucket              No
cloud.storage                    google.storage.object.finalize                            Yes                 bucket              No
cloud.storage                    google.storage.object.metadataUpdate                      No                  bucket              No
cloud.storage                    providers/cloud.storage/eventTypes/object.change          No                  bucket              No
google.firebase.analytics.event  providers/google.firebase.analytics/eventTypes/event.log  Yes                 firebase analytics  No
google.firebase.database.ref     providers/google.firebase.database/eventTypes/ref.create  Yes                 firebase database   No
google.firebase.database.ref     providers/google.firebase.database/eventTypes/ref.delete  No                  firebase database   No
google.firebase.database.ref     providers/google.firebase.database/eventTypes/ref.update  No                  firebase database   No
google.firebase.database.ref     providers/google.firebase.database/eventTypes/ref.write   No                  firebase database   No
google.firestore.document        providers/cloud.firestore/eventTypes/document.create      Yes                 firestore document  No
google.firestore.document        providers/cloud.firestore/eventTypes/document.delete      No                  firestore document  No
google.firestore.document        providers/cloud.firestore/eventTypes/document.update      No                  firestore document  No
google.firestore.document        providers/cloud.firestore/eventTypes/document.write       No                  firestore document  No

またその他のデプロイ時オプション(調べたやつだけ)

  • --trigger-topic:トリガーとなるpub/subのトピック名を指定
  • --ignore-file:デプロイ除外ファイルを指定
  • --service-account:関数を実行するサービスアカウントを指定
  • --env-vars-file:環境変数を定義した設定ファイルを指定

参考

gcloud beta functions deploy

Google Cloud Functionsをコマンドラインからデプロイする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

twelve − 6 =

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください