Traffine I/O

日本語

2022-07-02

gcloudでCloud Functions関数をデプロイ

はじめに

Cloud Functionsは次のデプロイ方法があります。

  • GCPコンソールを使う
  • gcloud CLIを使う
  • Cloud Functions APIを使う

この記事では、gcloudコマンドを使ってCloud Functions関数をデプロイする方法について紹介します。

gcloudコマンド

gcloud functions deployコマンドを使ってCloud Functions関数のデプロイを行うことができます。

bash
$ 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世代)にデプロイするには、次のコマンドを使用します。

bash
$ 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のメッセージで関数をトリガーするには、次のコマンドを使用します。

bash
$ 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`内のイベントで関数をトリガーするには、次のコマンドを使用します。

bash
$ 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"

参考

https://cloud.google.com/functions/docs/deploy#from-inline-editor

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!