このページでは、Cloud Run サービスの環境変数を構成する方法について説明します。構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
必要なロール
Cloud Run サービスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
Cloud Run サービスに対する Cloud Run デベロッパー(
roles/run.developer
)ロール -
サービス ID に対するサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)ロール
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run サービスが Google Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
環境変数を設定する
新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、Google Cloud コンソール、gcloud CLI、または YAML ファイルを使用して環境変数を設定できます。
Console
Google Cloud コンソールで、[Cloud Run] に移動します。
[コンテナをデプロイ] をクリックし、[サービス] を選択して、新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。
[コンテナ] タブをクリックします。
- [変数を追加] をクリックして新しい変数を追加し、[名前] フィールドと [値] フィールドに変数名と値を指定します。
[作成] または [デプロイ] をクリックします。
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
です
YAML
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
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-1、VALUE-1 は、環境変数と値に置き換えます。必要に応じて、変数と値は追加できます。
- REVISION を新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります。
SERVICE-
で始まる- 小文字、数字、
-
のみが使用されている - 末尾が
-
ではない - 63 文字以内である
次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
次の google_cloud_run_v2_service
リソースでは、foo
環境変数を bar
に設定し、baz
環境変数を quux
に設定します。特定のニーズに合わせて環境変数を更新します。
多数の環境変数を設定する
環境変数が多すぎて KEY1=VALUE1,KEY2=VALUE2
形式で簡単にリストにできない場合は、次のように上記のフラグを複数回繰り返すこともできます。
[...] --set-env-vars "KEY1=VALUE1" \ --set-env-vars "KEY2=VALUE2" \ --set-env-vars "KEY3=VALUE3"
カンマをエスケープする
カンマ記号(,
)は環境変数の分割に使用されるため、環境変数の値にカンマ記号が含まれる場合は、次のように別の区切り文字(@
など)を指定してカンマをエスケープする必要があります。
--set-env-vars "^@^KEY1=value1,value2,value3@KEY2=..."
コンテナでデフォルトの環境変数を設定する
環境変数のデフォルト値を設定するには、Dockerfile で ENV
ステートメントを使用します。
ENV KEY1=VALUE1,KEY2=VALUE2
変数の優先順位: コンテナ vs サービスまたはジョブ
コンテナ内でデフォルト環境変数を設定し、Cloud Run サービスまたはジョブで同じ名前の環境変数を設定すると、サービスに設定された値が優先されます。
環境変数の設定を表示する
Cloud Run サービスの現在の環境変数の設定を表示するには:
コンソール
Google Cloud コンソールで、[Cloud Run] に移動します。
目的のサービスをクリックして、[サービスの詳細] ページを開きます。
[変更内容] タブをクリックします。
右側の詳細パネルの [コンテナ] タブに、環境変数の設定が表示されます。
gcloud
次のコマンドを使用します。
gcloud run services describe SERVICE
返された構成で、環境変数の設定を見つけます。
環境変数を更新する
既存のサービスのランタイム環境変数を更新できます。これは、ランタイム環境変数を削除せずに変更や追加を行う、非破壊的な方法です。
コンソール
Google Cloud コンソールを使用してランタイム環境変数を更新するには:
Google Cloud コンソールで、[Cloud Run] に移動します。
リストからサービスを選択し、[新しいリビジョンの編集とデプロイ] をクリックします。
[コンテナ] タブをクリックします。
[変数とシークレット] タブで、[名前] フィールドまたは [値] フィールドを編集し、[完了] をクリックします。
[デプロイ] をクリックします。
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
コマンドを使用します。
環境変数を削除する
コンソール
Google Cloud コンソールを使用してランタイム環境変数を削除するには:
Google Cloud コンソールで、[Cloud Run] に移動します。
リストからサービスを選択し、[新しいリビジョンの編集とデプロイ] をクリックします。
[コンテナ] タブをクリックします。
[変数とシークレット] タブで、削除する環境変数の [値] フィールドの左側にカーソルを移動して
[削除] アイコンを表示し、クリックします。[完了] をクリックします。
[デプロイ] をクリックします。
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 で機密性の高い構成を処理するをご覧ください。
次のステップ
buildpacks 構成を設定するには、環境変数を使用します。言語固有の詳細については、次の Buildpack に関するドキュメントをご覧ください。