Cloud Run 関数をデプロイする

このガイドでは、ソースコードから Cloud Run 関数をデプロイする方法について説明します。

デプロイ プロセスでは、ソースコードと構成設定を取得し、関数に対するリクエストを処理するために Cloud Run functions で自動的に管理される実行可能なイメージをビルドします。

デプロイの基本

Cloud Run functions をデプロイするユーザーには、Cloud Run functions デベロッパーの IAM ロールまたは同等の権限を含むロールが必要です。デプロイの追加構成もご覧ください。

該当するタブを選択して、gcloud CLI または Google Cloud コンソールを使用して関数をデプロイする手順を確認します。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 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 のドキュメントをご覧ください。

    デプロイ コマンドの例については、コマンドラインの例をご覧ください。

コンソール

  1. Google Cloud コンソールで Cloud Run functions の概要ページに移動します。

    Cloud Run 関数に移動

    Cloud Run functions をデプロイする Google Cloud プロジェクトが選択されていることを確認します。

  2. [関数を作成] をクリックします。

  3. [環境] フィールドで、Cloud Run functions を選択します。

  4. [関数名] フィールドに、関数の名前を入力します。関数名は、先頭を文字にし、その後に 62 文字以内の文字、数字、ハイフン、アンダースコアを続けます。末尾は文字または数字にする必要があります。関数用に作成された Cloud Run サービスの名前では、アンダースコアがハイフンに置き換えられ、大文字は小文字に変換されます。たとえば、Function_1 には Cloud Run では function-1 という名前が付けられます。

  5. [リージョン] フィールドで、関数をデプロイするリージョンを選択します。

  6. [トリガー] セクションで、選択した環境に基づいて��の操作を行います。

    1. [トリガーのタイプ] フィールドで、使用するトリガーを選択します。
      • HTTPS トリガーの場合は、関数の未認証の呼び出しを許可するかどうかに応じて、適切なオプションを選択します。すべての Cloud Run functions に HTTP(S) トリガーのエンドポイントがあります。デフォルトでは認証が必要です。詳細については、呼び出しを認証するをご覧ください。
      • イベント ドリブン関数の場合は、Cloud Pub/SubCloud StorageCloud Firestoreその他のトリガー のいずれかを選択します。詳細については、Eventarc トリガーをご覧ください。
      • 必須フィールドに入力したら、[トリガーを保存] をクリックします。
  7. 必要に応じて、ページの最後にある [ランタイム、ビルド、接続の設定] セクションを開いて、追加の構成セキュリティ オプションにアクセスします。

  8. [次へ] をクリックして、[コード] ステップに進みます。

  9. [ランタイム] フィールドで、関数が使用する言語ランタイムを選択します。Cloud Run functions は、複数のランタイムをサポートしています。詳細については、ランタイムをご覧ください。

  10. [エントリ ポイント] フィールドに、ソースコード内の関数のエントリ ポイントを入力します。これは、関数の実行時に実行されるコードです。このフラグには、ソースコード内に存在する関数名または完全修飾クラス名を指定する必要があります。詳しくは、関数のエントリ ポイントご覧ください。

  11. [ソースコード] フィールドで、関数のソースコードの提供に適したオプションを選択します。詳しくは、以下のセクションをご覧ください。

  12. [デプロイ] をクリックします。

デプロイが正常に完了すると、Google Cloud コンソールの Cloud Run functions の概要ページで関数に緑色のチェックマークが表示されます。

Cloud コンソールでデプロイされた関数

基盤となるインフラストラクチャがプロビジョニングされている間は、関数の最初のデプロイに数分かかることがあります。既存の関数の再デプロイは速くなります。受信トラフィックは自動的に最新バージョンに移行されます。

ローカルマシンからデプロイする

このセクションでは、ローカルマシンにあるソースコードから関数をデプロイする方法について説明します。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. gcloud functions deploy コマンドを使用して、上記のデプロイ手順を行います。

    --source フラグには、関数のソースコードのルート ディレクトリへのローカル ファイル システムのパスを指定します。ソース ディレクトリの構造をご覧ください。このフラグを省略すると、現在の作業ディレクトリが使用されます。

    また、--stage-bucket フラグを使用して、デプロイでソースコードをアップロードする Cloud Storage バケットを指定することもできます。

    ソースコードのアップロード中、Cloud Run functions は .gcloudignore ファイルを使用して不要なファイルを除外します。

コンソール

  1. Google Cloud コンソールで上記のデプロイ手順を行い、[ソースコード] フィールドに移動します。
  2. [ソースコード] フィールドで [ZIP アップロード] を選択します。
  3. [転送先バケット] フィールドで [参照] をクリックして、デプロイでソースコードをアップロードする Cloud Storage バケットを選択します。
  4. [ZIP ファイル] フィールドで [参照] をクリックして、ローカル ファイル システムからアップロードする ZIP ファイルを選択します。関数のソースファイルは ZIP ファイルのルートに置く必要があります。ソース ディレクトリの構造をご覧ください。
  5. [デプロイ] をクリックします。

Cloud Storage からデプロイする

このセクションでは、Cloud Storage バケットにあるソースコードから関数をデプロイする方法について説明します。ソースコードは ZIP ファイルとしてパッケージ化する必要があります。

Cloud Run functions が Cloud Storage バケットからの読み取りを行うには、Cloud Run functions のサービス エージェントstorage.objects.get 権限が必要です。ソースバケットが関数と同じプロジェクトにある場合、権限は自動的に付与されます。バケットが別のプロジェクトにある場合は、サービス エージェントに手動で権限を付与する必要があります。

バケットへのアクセスの制御については、Cloud Storage ドキュメントの IAM 権限を使用するをご覧ください。

この権限により、Cloud Storage から関数をデプロイできます。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. gcloud functions deploy コマンドを使用して、上記のデプロイ手順を行います。

    --source フラグには、gs:// で始まる Cloud Storage パスを指定します。パス上のオブジェクトは、関数のソースコードを含む ZIP ファイルにする必要があります。関数のソースファイルは ZIP ファイルのルートに置く必要があります。ソース ディレクトリの構造をご覧ください。

コンソール

  1. Google Cloud コンソールで上記のデプロイ手順を行い、[ソースコード] フィールドに移動します。
  2. [ソースコード] フィールドで、[Cloud Storage の ZIP] を選択します。
  3. [Cloud Storage のロケーション] フィールドで、[参照] をクリックして Cloud Storage の ZIP ファイルを選択します。関数のソースファイルは ZIP ファイルのルートに置く必要があります。ソース ディレクトリの構造をご覧ください。
  4. [デプロイ] をクリックします。

Google Cloud コンソールのインライン エディタからデプロイする

このセクションでは、付属のインライン エディタを使用して Google Cloud コンソールから直接関数を作成し、デプロイする方法について説明します。

  1. Google Cloud コンソールで上記のデプロイ手順を行い、[ソースコード] フィールドに移動します。
  2. [ソースコード] フィールドで [インライン エディタ] を選択します。
  3. 付属のエディタを使用して、必要に応じてソースファイルを作成または編集します。ソース ディレクトリの構造をご覧ください。
    • 左側のペインにソースファイルが表示され、ファイルの作成、名前の変更、削除を行うことができます。
    • 右側のペインは、ファイルの内容を編集できるテキスト エディタです。
  4. [デプロイ] をクリックします。

コマンドラインの例

このセクションでは、いくつかのシナリオ���例にしてデプロイ コマンドの使い方を説明します。

Cloud Run functions でサポートされているさまざまなトリガーの詳細については、Cloud Run functions のトリガーをご覧ください。

ローカルのソースコードから HTTP 関数をデプロイする

次のような HTTP 関数があるとします。

  • この関数は nodejs20 を使用します。
  • ソースコードは現在の作業ディレクトリ(.)にあります。
  • コードのエントリ ポイントは myHttpFunction という名前です。

リージョン us-central1my-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-west1my-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-northeast1my-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"

次のステップ