Cloud Run 関数をデプロイする
このガイドでは、ソースコードから Cloud Run 関数をデプロイする方法について説明します。
デプロイ プロセスでは、ソースコードと構成設定を取得し、関数に対するリクエストを処理するために Cloud Run functions で自動的に管理される実行可能なイメージをビルドします。
デプロイの基本
Cloud Run functions をデプロイするユーザーには、Cloud Functions デベロッパーの IAM ロールまたは同等の権限を含むロールが必要です。デプロイの追加構成もご覧ください。
-
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
コマンドを使用して、関数をデプロイします。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 文字以内の文字、数字、ハイフン、アンダースコアを続けます。末尾は文字または数字にする必要があります。関数用に作成された Cloud Run サービスの名前では、アンダースコアがハイフンに置き換えられ、大文字は小文字に変換されます。たとえば、Function_1
には Cloud Run ではfunction-1
という名前が付けられます。--gen2
フラグ(省略可)は、Cloud Run functions にデプロイすることを指定します。--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-filters=EVENTARC_EVENT_FILTERS
指定されたフィルタに一致するイベントが発生したときに、Eventarc で関数をトリガーします。詳細と追加のオプションについては、 Eventarc トリガーをご覧ください。 関数をデプロイするときに、追加の構成、ネットワーキング、セキュリティのオプションを指定することもできます。
デプロイ コマンドとそのフラグの詳細については、
gcloud functions deploy
のドキュメントをご覧ください。デプロイ コマンドの例については、コマンドラインの例をご覧ください。
デプロイが正常に完了すると、Google Cloud コンソールの Cloud Run の概要ページで関数に緑色のチェックマークが表示されます。
基盤となるインフラストラクチャがプロビジョニングされている間は、関数の最初のデプロイに数分かかることがあります。既存の関数の再デプロイは速くなります。受信トラフィックは自動的に最新バージョンに移行されます。
ローカルマシンからデプロイする
このセクションでは、ローカルマシンにあるソースコードから関数をデプロイする方法について説明します。
-
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
ファイルを使用して不要なファイルを除外します。
Cloud Storage からデプロイする
このセクションでは、Cloud Storage バケットにあるソースコードから関数をデプロイする方法について説明します。ソースコードは ZIP ファイルとしてパッケージ化する必要があります。
Cloud Run functions が Cloud Storage バケットからの読み取りを行うには、Cloud Run functions のサービス エージェントに storage.objects.get
権限が必要です。ソースバケットが関数と同じプロジェクトにある場合、権限は自動的に付与されます。バケットが別のプロジェクトにある場合は、サービス エージェントに手動で権限を付与する必要があります。
バケットへのアクセスの制御については、Cloud Storage ドキュメントの IAM 権限を使用するをご覧ください。
この権限により、Cloud Storage から関数をデプロイできます。
-
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 ファイルのルートに置く必要があります。ソース ディレクトリの構造をご覧ください。
コマンドラインの例
このセクションでは、いくつかのシナリオを例にしてデプロイ コマンドの使い方を説明します。
Cloud Run functions でサポートされているさまざまなトリガーの詳細については、Cloud Run functions のトリガーをご覧ください。
ローカルのソースコードから HTTP 関数をデプロイする
次のような HTTP 関数があるとします。
- この関数は
nodejs22
を使用します。 - ソースコードは現在の作業ディレクトリ(
.
)にあります。 - コードのエントリ ポイントは
myHttpFunction
という名前です。
リージョン us-central1
に my-http-function
という名前の関数をデプロイするには、次のコマンドを使用します。
gcloud functions deploy my-http-function \
--gen2 \
--region=us-central1 \
--runtime=nodejs22 \
--source=. \
--entry-point=myHttpFunction \
--trigger-http
Cloud Storage のソースコードから Pub/Sub 関数をデプロイする
次のようなイベント ドリブン関数があるとします。
- この関数は、Pub/Sub メッセージのパブリッシュ イベントを処理します。
- この関数は
python312
を使用します。 - ソースコードは Cloud Storage のパス、
gs://my-bucket/my_function_source.zip
。 - コードのエントリ ポイントは
pubsub_handler
という名前です。
リージョン europe-west1
に my-pubsub-function
という名前の関数をデプロイし、Pub/Sub トピック my-topic
のメッセージで関数をトリガーするには、次のコマンドを使用します。
gcloud functions deploy my-pubsub-function \
--gen2 \
--region=europe-west1 \
--runtime=python312 \
--source=gs://my-bucket/my_function_source.zip \
--entry-point=pubsub_handler \
--trigger-topic=my-topic
ローカルのソースコードから Cloud Storage 関数をデプロイする
次のようなイベント ドリブン関数があるとします。
- この関数は、Cloud Storage オブジェクトの削除イベントを処理します。
- この関数は
java21
を使用します。 - ソースコードはローカルのパス
./functions/storage-function
にあります。 - コードのエントリ ポイントは
myproject.StorageFunction
という名前です。
リージョン asia-northeast1
に my-storage-function
という名前の関数をデプロイし、Cloud Storage バケット my-bucket
内のイベントで関数をトリガーするには、次のコマンドを使用します。
gcloud functions deploy my-storage-function \
--gen2 \
--region=asia-northeast1 \
--runtime=java21 \
--source=./functions/storage-function \
--entry-point=myproject.StorageFunction \
--trigger-event-filters="type=google.cloud.storage.object.v1.deleted" \
--trigger-event-filters="bucket=my-bucket"
次のステップ
- Cloud Run 関数のトリガーの詳細を確認する。
- Cloud Run 関数のビルドプロセスについて学習する。
- Cloud Run functions のその他の構成オプションを確認する。
- Cloud Run 関数の保護について確認する。
- チュートリアルで Cloud Run functions の具体的な使用例を確認する。