Cloud Run functions の関数(第 1 世代)をデプロイする
このガイドでは、ソースコードから以前の第 1 世代の Cloud Run functions の関数をデプロイする方法について説明します。新しい関数を作成する場合は、Cloud Run のコンソールのクイックスタートをご覧ください。
デプロイ プロセスでは、ソースコードと構成設定を取得し、関数に対するリクエストを処理するために Cloud Run functions で自動的に管理される実行可能なイメージをビルドします。
デプロイの基本
Cloud Run functions をデプロイするユーザーには、Cloud Run functions デベロッパーの IAM ロールまたは同等の権限を含むロールが必要です。デプロイの追加構成もご覧ください。
gcloud CLI を使用して関数をデプロイします。
gcloud functions deploy
コマンドを使用して、関数をデプロイします。gcloud functions deploy YOUR_FUNCTION_NAME \ [--gen2] \ --region=YOUR_REGION \ --runtime=YOUR_RUNTIME \ --source=YOUR_SOURCE_LOCATION \ --entry-point=YOUR_CODE_ENTRYPOINT \ TRIGGER_FLAGS
1 つ目の引数
YOUR_FUNCTION_NAME
は、デプロイされる関数の名前です。関数名は、先頭を文字にし、その後に 62 文字以内の文字、数字、ハイフン、アンダースコアを続けます。末尾は文字または数字にする必要があります。--gen2
フラグは、Cloud Run functions にデプロイすることを指定します。2024 年 9 月より、これがデフォルトになります。第 1 世代にデプロイするには、--no-gen2
を使用します。--region
フラグには、関数をデプロイするリージョンを指定します。Cloud Run functions でサポートされているリージョンについては、ロケーションをご覧ください。--runtime
フラグには、関数で使用される言語ランタイムを指定します。Cloud Run functions は、複数のランタイムをサポートしています。詳細については、ランタイムをご覧ください。--source
フラグには、関数のソースコードの場所を指定します。詳しくは、以下のセクションをご覧ください。--entry-point
フラグには、ソースコード内の関数のエントリ ポイントを指定します。これは、関数の実行時に実行されるコードです。このフラグには、ソースコード内に存在する関数名または完全修飾クラス名を指定する必要があります。詳細については、関数のエントリ ポイントをご覧ください。関数のトリガーを指定する場合は、使用するトリガーに応じて、追加のフラグ(上記の
TRIGGER_FLAGS
)を使用する必要があります。トリガーフラグ トリガーの説明 --trigger-http
HTTP(S) リクエストで関数をトリガーします。詳しくは、HTTP トリガーをご覧ください。 --trigger-topic=YOUR_PUBSUB_TOPIC
指定した Pub/Sub トピックにメッセージがパブリッシュされたときに関数をトリガーします。詳細については、Pub/Sub トリガーをご覧ください。 --trigger-bucket=YOUR_STORAGE_BUCKET
指定された Cloud Storage バケットでオブジェクトの作成または上書きが行われたときに、この関数をトリガーします。詳細については、Cloud Storage トリガーをご覧ください。 --trigger-event=EVENT_TYPE
[--trigger-resource=RESOURCE]指定されたイベントが発生すると関数をトリガーします。一部のイベントタイプでは、リソースを指定する必要があります。詳細については、Cloud Run functions(第 1 世代)でサポートされているトリガーをご覧ください。 関数をデプロイするときに、追加の構成、ネットワーキング、セキュリティのオプションを指定することもできます。
デプロイ コマンドとそのフラグの詳細については、
gcloud functions deploy
のドキュメントをご覧ください。デプロイ コマンドの例については、コマンドラインの例をご覧ください。
ローカルマシンからデプロイする
このセクションでは、gcloud CLI を使用してローカルマシンにあるソースコードから関数をデプロイする方法について説明します。
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
gcloud functions deploy
コマンドを使用して、上記のデプロイ手順を行います。--source
フラグには、関数のソースコードのルート ディレクトリへのローカル ファイル システムのパスを指定します。ソース ディレクトリの構造をご覧ください。このフラグを省略すると、現在の作業ディレクトリが使用されます。また、
--stage-bucket
フラグを使用して、デプロイでソースコードをアップロードする Cloud Storage バケットを指定することもできます。ソースコードのアップロード中、Cloud Run functions は
.gcloudignore
ファイルを使用して不要なファイルを除外します。-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
gcloud functions deploy
コマンドを使用して、上記のデプロイ手順を行います。--source
フラグには、gs://
で始まる Cloud Storage パスを指定します。パス上のオブジェクトは、関数のソースコードを含む ZIP ファイルにする必要があります。関数のソースファイルは ZIP ファイルのルートに置く必要があります。ソース ディレクトリの構造をご覧ください。- この関数は Node.js 20 を使用します。
- ソースコードは現在の作業ディレクトリ(
.
)にあります。 - コードのエントリ ポイントは
myHttpFunction
という名前です。 - この関数は、Pub/Sub メッセージのパブリッシュ イベントを処理します。
- この関数は Python 3.12 を使用します。
- ソースコードは Cloud Storage のパス
gs://my-bucket/my_function_source.zip
にあります。 - コードのエントリ ポイントは
pubsub_handler
という名前です。 - この関数は、Cloud Storage オブジェクトの削除イベントを処理します。
- この関数は Java 17 を使用します。
- ソースコードはローカルのパス
./functions/storage-function
にあります。 - コードのエントリ ポイントは
myproject.StorageFunction
という名前です。 - Cloud Run functions のトリガーの詳細を確認する。
- Cloud Run functions のビルドプロセスについて学習する。
- Cloud Run functions のその他の構成オプションを確認する。
- Cloud Run functions の保護について学習する。
Cloud Storage からデプロイする
このセクションでは、gcloud CLI を使用して、Cloud Storage バケットにあるソースコードから関数をデプロイする方法について説明します。ソースコードは ZIP ファイルとしてパッケージ化する必要があります。
Cloud Run functions が Cloud Storage バケットからの読み取りを実行できるように、デプロイを実行するアカウントに storage.objects.get
権限を付与する必要があります。
バケットへのアクセスの制御については、Cloud Storage ドキュメントの IAM 権限の使用をご覧ください。
この権限により、Cloud Storage から関数をデプロイできます。
コマンドラインの例
このセクションでは、いくつかのシナリオを例にしてデプロイ コマンドの使い方を説明します。
Cloud Run functions でサポートされているさまざまなトリガーの詳細については、Cloud Run functions のトリガーをご覧ください。
ローカルのソースコードから HTTP 関数をデプロイする
次のような HTTP 関数があるとします。
リージョン us-central1
の my-http-function
という名前で関数を Cloud Run functions にデプロイするには、次のコマンドを使用します。
gcloud functions deploy my-http-function \
--no-gen2 \
--region=us-central1 \
--runtime=nodejs20 \
--source=. \
--entry-point=myHttpFunction \
--trigger-http
Cloud Storage のソースコードから Pub/Sub 関数をデプロイする
次のようなイベント ドリブン関数があるとします。
リージョン europe-west1
内の my-pubsub-function
という名前で関数を Cloud Run functions にデプロイし、Pub/Sub トピック my-topic
のメッセージで関数をトリガーするには、次のコマンドを使用します。
gcloud functions deploy my-pubsub-function \
--no-gen2 \
--region=europe-west1 \
--runtime=python312 \
--source=gs://my-bucket/my_function_source.zip \
--entry-point=pubsub_handler \
--trigger-topic=my-topic
ローカルのソースコードから Cloud Storage 関数をデプロイする
次のようなイベント ドリブン関数があるとします。
リージョン asia-northeast1
の my-storage-function
という名前で関数を Cloud Run functions にデプロイし、Cloud Storage バケット my-bucket
内のイベントで関数をトリガーするには、次のコマンドを使用します。
gcloud functions deploy my-storage-function \
--no-gen2 \
--region=asia-northeast1 \
--runtime=java17 \
--source=./functions/storage-function \
--entry-point=myproject.StorageFunction \
--trigger-resource=gs://my-bucket \
--trigger-event=google.storage.object.delete