Cloud Run 関数をデプロイする
このガイドでは、ソースコードから Cloud Run 関数をデプロイする方法について説明します。
デプロイ プロセスでは、ソースコードと構成設定を取得し、関数に対するリクエストを処理するために Cloud Run functions で自動的に管理される実行可能なイメージをビルドします。
デプロイの基本
Cloud Run functions をデプロイするユーザーには、Cloud Run functions デベロッパーの IAM ロールまたは同等の権限を含むロールが必要です。デプロイの追加構成もご覧ください。
該当するタブを選択して、gcloud CLI または Google Cloud コンソールを使用して関数をデプロイする手順を確認します。
gcloud
-
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 で関数をトリガーします。 --gen2
フラグを指定する必要があります。詳細と追加のオプションについては、Eventarc トリガーをご覧ください。関数をデプロイするときに、追加の構成、ネットワーキング、セキュリティのオプションを指定することもできます。
デプロイ コマンドとそのフラグの詳細については、
gcloud functions deploy
のドキュメントをご覧ください。デプロイ コマンドの例については、コマンドラインの例をご覧ください。
コンソール
Google Cloud コンソールで Cloud Run functions の概要ページに移動します。
Cloud Run functions をデプロイする Google Cloud プロジェクトが選択されていることを確認します。
[関数を作成] をクリックします。
[環境] フィールドで、Cloud Run functions を選択します。
[関数名] フィールドに、関数の名前を入力します。関数名は、先頭を文字にし、その後に 62 文字以内の文字、数字、ハイフン、アンダースコアを続けます。末尾は文字または数字にする必要があります。関数用に作成された Cloud Run サービスの名前では、アンダースコアがハイフンに置き換えられ、大文字は小文字に変換されます。たとえば、
Function_1
には Cloud Run ではfunction-1
という名前が付けられます。[リージョン] フィールドで、関数をデプロイするリージョンを選択します。
[トリガー] セクションで、選択した環境に基づいて次の操作を行います。
- [トリガーのタイプ] フィールドで、使用するトリガーを選択します。
- HTTPS トリガーの場合は、関数の未認証の呼び出しを許可するかどうかに応じて、適切なオプションを選択します。すべての Cloud Run functions に HTTP(S) トリガーのエンドポイントがあります。デフォルトでは認証が必要です。詳細については、呼び出しを認証するをご覧ください。
- イベント ドリブン関数の場合は、Cloud Pub/Sub、Cloud Storage、Cloud Firestore、その他のトリガー のいずれかを選択します。詳細については、Eventarc トリガーをご覧ください。
- 必須フィールドに入力したら、[トリガーを保存] をクリックします。
- [トリガーのタイプ] フィールドで、使用するトリガーを選択します。
必要に応じて、ページの最後にある [ランタイム、ビルド、接続の設定] セクションを開いて、追加の構成とセキュリティ オプションにアクセスします。
[次へ] をクリックして、[コード] ステップに進みます。
[ランタイム] フィールドで、関数が使用する言語ランタイムを選択します。Cloud Run functions は、複数のランタイムをサポートしています。詳細については、ランタイムをご覧ください。
[エントリ ポイント] フィールドに、ソースコード内の関数のエントリ ポイントを入力します。これは、関数の実行時に実行されるコードです。このフラグには、ソースコード内に存在する関数名または完全修飾クラス名を指定する必要があります。詳しくは、関数のエントリ ポイントご覧ください。
[ソースコード] フィールドで、関数のソースコードの提供に適したオプションを選択します。詳しくは、以下のセクションをご覧ください。
[デプロイ] をクリックします。
デプロイが正常に完了すると、Google Cloud コンソールの Cloud Run functions の概要ページで関数に緑色のチェックマークが表示されます。
基盤となるインフラストラクチャがプロビジョニングされている間は、関数の最初のデプロイに数分かかることがあります。既存の関数の再デプロイは速くなります。受信トラフィックは自動的に最新バージョンに移行されます。
ローカルマシンからデプロイする
このセクションでは、ローカルマシンにあるソースコードから関数をデプロイする方法について説明します。
gcloud
-
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
ファイルを使用して不要なファイルを除外します。
コンソール
- Google Cloud コンソールで上記のデプロイ手順を行い、[ソースコード] フィールドに移動します。
- [ソースコード] フィールドで [ZIP アップロード] を選択します。
- [転送先バケット] フィールドで [参照] をクリックして、デプロイでソースコードをアップロードする Cloud Storage バケットを選択します。
- [ZIP ファイル] フィールドで [参照] をクリックして、ローカル ファイル システムからアップロードする ZIP ファイルを選択します。関数のソースファイルは ZIP ファイルのルートに置く必要があります。ソース ディレクトリの構造をご覧ください。
- [デプロイ] をクリックします。
Cloud Storage からデプロイする
このセクションでは、Cloud Storage バケットにあるソースコードから関数をデプロイする方法について説明します。ソースコードは ZIP ファイルとしてパッケージ化する必要があります。
Cloud Run functions が Cloud Storage バケットからの読み取りを行うには、Cloud Run functions のサービス エージェントに storage.objects.get
権限が必要です。ソースバケットが関数と同じプロジェクトにある場合、権限は自動的に付与されます。バケットが別のプロジェクトにある場合は、サービス エージェントに手動で権限を付与する必要があります。
バケットへのアクセスの制御については、Cloud Storage ドキュメントの IAM 権限を使用するをご覧ください。
この権限により、Cloud Storage から関数をデプロイできます。
gcloud
-
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 ファイルのルートに置く必要があります。ソース ディレクトリの構造をご覧ください。
コンソール
- Google Cloud コンソールで上記のデプロイ手順を行い、[ソースコード] フィールドに移動します。
- [ソースコード] フィールドで、[Cloud Storage の ZIP] を選択します。
- [Cloud Storage のロケーション] フィールドで、[参照] をクリックして Cloud Storage の ZIP ファイルを選択します。関数のソースファイルは ZIP ファイルのルートに置く必要があります。ソース ディレクトリの構造をご覧ください。
- [デプロイ] をクリックします。
Google Cloud コンソールのインライン エディタからデプロイする
このセクションでは、付属のインライン エディタを使用して Google Cloud コンソールから直接関数を作成し、デプロイする方法について説明します。
- Google Cloud コンソールで上記のデプロイ手順を行い、[ソースコード] フィールドに移動します。
- [ソースコード] フィールドで [インライン エディタ] を選択します。
- 付属のエディタを使用して、必要に応じてソースファイルを作成または編集します。ソース ディレクトリの構造をご覧ください。
- 左側のペインにソースファイルが表示され、ファイルの作成、名前の変更、削除を行うことができます。
- 右側のペインは、ファイルの内容を編集できるテキスト エディタです。
- [デプロイ] をクリックします。
コマンドラインの例
このセクションでは、いくつかのシナリオを例にしてデプロイ コマンドの使い方を説明します。
Cloud Run functions でサポートされているさまざまなトリガーの詳細については、Cloud Run functions のトリガーをご覧ください。
ローカルのソースコードから HTTP 関数をデプロイする
次のような HTTP 関数があるとします。
- この関数は
nodejs20
を使用します。 - ソースコードは現在の作業ディレクトリ(
.
)にあります。 - コードのエントリ ポイントは
myHttpFunction
という名前です。
リージョン us-central1
に my-http-function
という名前の関数をデプロイするには、次のコマンドを使用します。
gcloud functions deploy my-http-function \
--gen2 \
--region=us-central1 \
--runtime=nodejs20 \
--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 オブジェクトの削除イベントを処理します。
- この関数は
java17
を使用します。 - ソースコードはローカルのパス
./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=java17 \
--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 の具体的な使用例を確認する。