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-httpHTTP(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 22 を使用します。
- ソースコードは現在の作業ディレクトリ(
.)にあります。 - コードのエントリ ポイントは
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=nodejs22 \
--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