はじめに
Cloud Functionsは次のデプロイ方法があります。
- GCPコンソールを使う
- gcloud CLIを使う
- Cloud Functions APIを使う
この記事では、gcloudコマンドを使ってCloud Functions関数をデプロイする方法について紹介します。
gcloudコマンド
gcloud functions deploy
コマンドを使ってCloud Functions関数のデプロイを行うことができます。
$ gcloud functions deploy YOUR_FUNCTION_NAME \
[--gen2] \
--region=YOUR_REGION \
--runtime=YOUR_RUNTIME \
--source=YOUR_SOURCE_LOCATION \
--entry-point=YOUR_CODE_ENTRYPOINT
-
YOUR_FUNCTION_NAME
デプロイする関数の名前。関数名には小文字、数字、ハイフン、アンダースコアを使用可能。 -
--gen2
Cloud Functions(第2世代)にデプロイすることを指定。このフラグを省略すると、Cloud Functions(第1世代)にデプロイされる。 -
--region
関数をデプロイするリージョンを指定 -
--runtime
関数で使用される言語ランタイムを指定 -
--source
関数のソースコードの場所を指定 -
--entry-point
ソースコード内の関数のエントリポイント(関数名)を指定
コマンド例
以下にコマンド例を示します。
ローカルのソースコードからHTTP関数をデプロイ
次のようなHTTP関数があるとします。
- この関数はNode.js 16を使用
- ソースコードは現在の作業ディレクトリ(
.
)にある - コードのエントリポイントは
myHttpFunction
リージョンus-central1のmy-http-function
という名前で関数をCloud Functions(第2世代)にデプロイするには、次のコマンドを使用します。
$ gcloud functions deploy my-http-function \
--gen2 \
--region=us-central1 \
--runtime=nodejs16 \
--source=. \
--entry-point=myHttpFunction \
--trigger-http
Cloud StorageのソースコードからPub/Sub関数をデプロイ
次のようなイベント ドリブン関数があるとします。
- この関数は、Pub/Subメッセージのパブリッシュイベントを処理
- この関数はPython 3.9を使用
- ソースコードはCloud Storageのパス
gs://my-bucket/my_function_source.zip
にある - コードのエントリポイントは
pubsub_handler
リージョンeurope-west1内のmy-pubsub-function
という名前で関数をCloud Functions(第2世代)にデプロイし、Pub/Subトピックmy-topic
のメッセージで関数をトリガーするには、次のコマンドを使用します。
$ gcloud functions deploy my-pubsub-function \
--gen2 \
--region=europe-west1 \
--runtime=python39 \
--source=gs://my-bucket/my_function_source.zip \
--entry-point=pubsub_handler \
--trigger-topic=my-topic
ローカルのソースコードからCloud Storage関数をデプロイ
次のようなイベントドリブン関数があるとします。
- この関数は、Cloud Storageオブジェクトの削除イベントを処理
- この関数はJava 11を使用
- ソースコードはローカルのパス
./functions/storage-function
にある - コードのエントリ ポイントは
myproject.StorageFunction
リージョンasia-northeast1の``my-storage-functionという名前で関数を Cloud Functions(第 2 世代)にデプロイし、Cloud Storage バケット
my-bucket`内のイベントで関数をトリガーするには、次のコマンドを使用します。
$ gcloud functions deploy my-storage-function \
--gen2 \
--region=asia-northeast1 \
--runtime=java11 \
--source=./functions/storage-function \
--entry-point=myproject.StorageFunction \
--trigger-event-filters="type=google.cloud.storage.object.v1.deleted" \
--trigger-event-filters="bucket=my-bucket"
参考