サービスの環境変数を構成する

このページでは、Cloud Run サービスの環境変数を構成する方法について説明します。

構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。

必要なロール

Cloud Run サービスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールCloud Run IAM 権限をご覧ください。Cloud Run サービスがGoogle Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限アクセスの管理をご覧ください。

環境変数を設定する

新規サービスと既存サービスの環境変数を設定できます。--set-env-vars フラグは破壊的なアクションであり、以前に設定され新しい環境変数リストに含まれていない環境変数は削除される点に注意してください。

環境変数は、新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、 Google Cloud コンソール、gcloud CLI、または YAML ファイルを使用して設定できます。

コンソール

  1. Google Cloud コンソールで Cloud Run に移動します。

    Cloud Run に移動

  2. [コンテナをデプロイ] をクリックし、[サービス] を選択して、新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. 新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。

  4. [コンテナ] タブをクリックします。

    画像

    • [変数を追加] をクリックして新しい変数を追加し、[名前] フィールドと [] フィールドに変数名と値を指定します。
  5. [作成] または [デプロイ] をクリックします。

gcloud

サービスのデプロイ時に環境変数を指定するには、--set-env-vars フラグを使用します。

gcloud run deploy SERVICE --image IMAGE_URL --set-env-vars KEY1=VALUE1,KEY2=VALUE2

次のように置き換えます。

  • SERVICE は、実際のサービスの名前に置き換えます。
  • KEY1=VALUE1,KEY2=VALUE2 は、変数名と値のカンマ区切りのリストに置き換えます。
  • IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG です。

サービスの更新時に環境変数を指定するには、--set-env-vars フラグを使用します。

gcloud run services update SERVICE --image IMAGE_URL --set-env-vars KEY1=VALUE1,KEY2=VALUE2

多数の環境変数を設定する

KEY1=VALUE1,KEY2=VALUE2 形式でリストできない環境変数が多い場合は、--set-env-vars フラグを複数回、繰り返すことができます。
   [...]
   --set-env-vars "KEY1=VALUE1" \
   --set-env-vars "KEY2=VALUE2" \
   --set-env-vars "KEY3=VALUE3"

カンマをエスケープする

カンマ記号(,)は環境変数の分割に使用されるため、環境変数の値にカンマ記号が含まれる場合は、次のように別の区切り文字(@ など)を指定してカンマをエスケープする必要があります。
--set-env-vars "^@^KEY1=value1,value2,value3@KEY2=..."

YAML

  1. 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. containers: の下の env 属性の下にある name 属性と value 属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE
            env:
            - name: KEY-1
              value: VALUE-1
            - name: KEY-N
              value: VALUE-N

    次のように置き換えます。

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
    • IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG です。
    • KEY-1VALUE-1 は、環境変数と値に置き換えます。必要に応じて、変数と値は追加できます。
    • REVISION を新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります
      • SERVICE- で始まる
      • 小文字、数字、- のみが使用されている
      • 末尾が - ではない
      • 63 文字以内である
  3. 次のコマンドを使用して、サービスを作成または更新します。

    gcloud run services replace service.yaml

Terraform

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

Terraform 構成の google_cloud_run_v2_service リソースに次の内容を追加します。

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-env-var"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      # Environment variables
      env {
        name  = "foo"
        value = "bar"
      }
      env {
        name  = "baz"
        value = "quux"
      }
    }
  }
}

前の google_cloud_run_v2_service リソースでは、foo 環境変数を bar に設定し、baz 環境変数を quux に設定します。必要に応じて環境変数を更新します。

コンテナでデフォルトの環境変数を設定する

環境変数のデフォルト値を設定するには、Dockerfile で ENV ステートメントを使用します。

ENV KEY1=VALUE1,KEY2=VALUE2

変数の優先順位: コンテナとサービス

コンテナ内でデフォルト環境変数を設定し、Cloud Run サービスで同じ名前の環境変数を設定すると、サービスに設定された値が優先されます。

環境変数を更新する

既存のサービスの環境変数を更新できます。これは非破壊的なアプローチです。環境変数の変更または追加は行いますが、以前に設定された環境変数は削除しません。

コンソール

Google Cloud コンソールを使用して環境変数を更新するには:

  1. Google Cloud コンソールで Cloud Run に移動します。

    Cloud Run に移動

  2. リストからサービスを選択し、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. [コンテナ] タブをクリックします。

  4. [変数とシークレット] タブで、[名前] フィールドまたは [] フィールドを編集し、[完了] をクリックします。

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

gcloud

既存のサービスの環境変数を更新するには、--update-env-vars フラグを使用します。

gcloud run services update SERVICE --update-env-vars KEY1=VALUE1,KEY2=VALUE2

次のように置き換えます。

  • SERVICE は、実際のサービスの名前に置き換えます。
  • KEY1=VALUE1,KEY2=VALUE2 は、変数名と値のカンマ区切りのリストに置き換えます。

既存のマルチリージョン サービスの環境変数を更新するには、gcloud beta run multi-region-services update コマンドを使用します。

環境変数の設定を表示する

Cloud Run サービスの現在の環境変数の設定を表示するには:

コンソール

  1. Google Cloud コンソールで Cloud Run に移動します。

    Cloud Run に移動

  2. 目的のサービスをクリックして、[サービスの詳細] ページを開きます。

  3. [変更内容] タブをクリックします。

  4. 右側の詳細パネルの [コンテナ] タブに、環境変数の設定が表示されます。

gcloud

  1. 次のコマンドを使用します。

    gcloud run services describe SERVICE
  2. 返された構成で、環境変数の設定を見つけます。

環境変数を削除する

既存のサービスの環境変数を削除できます。

コンソール

Google Cloud コンソールを使用して環境変数を削除するには:

  1. Google Cloud コンソールで Cloud Run に移動します。

    Cloud Run に移動

  2. リストからサービスを選択し、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. [コンテナ] タブをクリックします。

  4. [変数とシークレット] タブで、削除する環境変数の [] フィールドの左側にカーソルを移動して [削除] アイコンを表示させ、クリックします。

  5. [完了] をクリックします。

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

gcloud

既存のサービスの環境変数を個別に削除するには、--remove-env-vars フラグを使用します。

gcloud run services update SERVICE --remove-env-vars KEY1,KEY2

次のように置き換えます。

  • SERVICE は、実際のサービスの名前に置き換えます。
  • KEY1,KEY2: 変数名のカンマ区切りリストに置き換えます。

または、--clear-env-vars フラグを使用して、以前に設定したすべての環境変数をクリアします。

gcloud run services update SERVICE --clear-env-vars

次のように置き換えます。

  • SERVICE は、実際のサービスの名前に置き換えます。

サンプルコード

コード内で環境変数にアクセスする方法を示すコードサンプルについては、エンドユーザー認証チュートリアルの Secret Manager で機密性の高い構成を処理するをご覧ください。

次のステップ

Buildpack 構成を設定するには、環境変数を使用します。言語固有の詳細については、次の Buildpack に関するドキュメントをご覧ください。