ターミナルから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:環境変数を定義した設定ファイルを指定