環境変数を構成する
Cloud Run 関数とともに任意の Key-Value ペアをデプロイできます。これらのペアは、実行時にコードからアクセスできるリテラル環境変数、または Google Cloud の Buildpack の構成情報として関数で使用できます。
環境変数は 1 つの関数にバインドされ、Google Cloud プロジェクトの他の関数からは参照できません。各変数は Cloud Run functions のバックエンドに保存され、バインドされている関数と同じライフサイクルが適用されます。
ランタイム環境変数を追加または削除するには、Google Cloud CLI または Google Cloud コンソールを使用します。
ランタイム環境変数の設定
このセクションで説明する方法を使用して、新しい変数を設定するか、既存の変数を完全に置き換えます。追加の変更を行うには、次のセクションで説明する更新プロセスを使用します。
gcloud
Google Cloud CLI を使用してランタイム環境変数を設定するには、デプロイ時に --set-env-vars
フラグを使用します。
gcloud functions deploy FUNCTION_NAME --set-env-vars FOO=bar FLAGS ...
カンマ区切りのリストを使用して、複数のランタイム環境変数を設定することもできます。
gcloud functions deploy FUNCTION_NAME --set-env-vars FOO=bar,BAZ=boo FLAGS...
ソース管理などで構成をファイルに保存する場合は、YAML ファイルと一緒に --env-vars-file
フラグを使用します。
gcloud functions deploy FUNCTION_NAME --env-vars-file .env.yaml FLAGS...
.env.yaml
ファイルの内容は次のとおりです。
FOO: bar
BAZ: boo
上の例で、FLAGS...
は関数のデプロイ時に渡す他のオプションを表します。deploy
コマンドの詳細については、gcloud functions deploy
をご覧ください。
Google Cloud コンソール UI
ランタイム環境変数は、関数の作成時に、Google Cloud コンソールで次のように設定できます。
Google Cloud コンソールで関数の概要ページを開きます。
[関数を作成] をクリックします。
関数の必須フィールドを入力します。
[ランタイム、ビルド、接続の設定] セクションを開きます。
[ランタイム] タブを選択します。
[ランタイム環境] セクションで、[変数を追加] をクリックして名前と値を追加します。
既存の関数に環境変数を追加する方法については、ランタイム環境変数の更新をご覧ください。
ランタイム環境変数の更新
既存の関数のランタイム環境変数を更新することもできます。これは、ランタイム環境変数を削除せずに変更や追加を行う、非破壊的な方法です。
gcloud
Google Cloud CLI を使用して変数を更新するには、デプロイ時に --update-env-vars
フラグを使用します。
gcloud functions deploy FUNCTION_NAME --update-env-vars FOO=bar
カンマ区切りのリストを使用して、複数のランタイム環境変数を更新することもできます。
gcloud functions deploy FUNCTION_NAME --update-env-vars FOO=bar,BAZ=boo
Google Cloud コンソール UI
Google Cloud コンソールを使用してランタイム環境変数を更新するには:
Google Cloud コンソールで関数の概要ページを開きます。
既存の関数をクリックして、その詳細ページに移動します。
[編集] をクリックします。
[ランタイム、ビルド、接続の設定] セクションを開きます。
[ランタイム] タブを選択します。
[ランタイム環境変数] セクションで必要な変更を加えます。
ランタイム環境変数の削除
gcloud
ランタイム環境変数を個別に削除する場合は、デプロイ時に --remove-env-vars
フラグを使用します。
gcloud functions deploy FUNCTION_NAME --remove-env-vars FOO,BAZ
あるいは、--clear-env-vars
フラグを使用して、以前に設定した環境変数をすべてクリアします。
gcloud functions deploy FUNCTION_NAME --clear-env-vars
Google Cloud コンソール UI
Google Cloud コンソールを使用してランタイム環境変数を削除するには:
Google Cloud コンソールで関数の概要ページを開きます。
既存の関数をクリックして、その詳細ページに移動します。
[編集] をクリックします。
[ランタイム、ビルド、接続の設定] セクションを開きます。
[ランタイム] タブを選択します。
[ランタイム環境変数] セクションで、Key-Value ペアの横にあるごみ箱アイコンをクリックして削除します。
自動的に設定されるランタイム環境変数
このセクションでは、自動的に設定されるランタイム環境の一覧を示します。
キー | 説明 |
---|---|
FUNCTION_TARGET |
予約済み: 実行される関数 |
FUNCTION_SIGNATURE_TYPE |
予約済み: 関数のタイプ。HTTP 関数の場合は http 、イベント ドリブン関数の場合は event です。 |
K_SERVICE |
予約済み: 関数リソースの名前 |
K_REVISION |
予約済み: 関数のバージョン ID。 |
PORT |
予約済み: 関数が呼び出されるポート。 |
gcloud functions deploy envVarMemory \
--runtime nodejs10 \
--set-env-vars FUNCTION_MEMORY_MB=2Gi \
--memory 2Gi \
--trigger-http
ランタイム環境変数の設定と取得の例
次のように記述して、ランタイム環境変数を設定します。
Node.js
gcloud functions deploy envVar \ --runtime nodejs20 \ --set-env-vars FOO=bar \ --trigger-http
サポートされている Node.js バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Python
gcloud functions deploy env_vars \ --runtime python312 \ --set-env-vars FOO=bar \ --trigger-http
サポートされている Python バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Go
gcloud functions deploy EnvVar \ --runtime go121 \ --set-env-vars FOO=bar \ --trigger-http
サポートされている Go バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Java
gcloud functions deploy java-envVar-function \ --entry-point functions.EnvVars \ --runtime java17 \ --memory 512MB \ --set-env-vars FOO=bar \ --trigger-http
サポートされている Java バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
C#
gcloud functions deploy csharp-envVar-function \ --entry-point EnvironmentVariables.Function \ --runtime dotnet6 \ --set-env-vars FOO=bar \ --trigger-http
サポートされている .NET バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Ruby
gcloud functions deploy env_vars --runtime ruby32 \ --set-env-vars FOO=bar \ --trigger-http
サポートされている Ruby バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
PHP
gcloud functions deploy envVar --runtime php82 \ --set-env-vars FOO=bar \ --trigger-http
サポートされている PHP バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
次のように記述して、実行時にプログラムで変数にアクセスします。
Node.js
Node.js では、process.env
プロパティを使用してランタイム環境変数にアクセスします。
Python
Python では、os.environ
を使用してランタイム環境変数にアクセスします。
Go
Go では、os.Getenv()
を使用してランタイム環境変数にアクセスします。
Java
Java では、System.getenv
を使用してランタイム環境変数にアクセスします。
C#
ランタイムに環境変数にアクセスするには、Go でEnvironment.GetEnvironmentVariable
を使用します。
Ruby
ランタイムに環境変数にアクセスするには、Ruby でENV
を使用します。
PHP
実行時は、PHP のgetenv
関数を使用して環境変数にアクセスできます。
ビルド環境変数の使用
buildpacks をサポートするランタイム用のビルド環境変数を設定することもできます。
ビルド環境変数は、buildpack に構成情報を渡す関数と一緒にデプロイされる Key-Value ペアです。たとえば、コンパイラ オプションをカスタマイズできます。これらのビルド環境変数を追加または削除するには、Google Cloud CLI または Google Cloud コンソール UI を使用します。
ビルド環境変数の設定
このセクションで説明する方法を使用して、新しい変数を設定するか、既存の変数を完全に置き換えます。追加の変更を行うには、次のセクションで説明する更新プロセス(gcloud
の --update-build-env-vars
フラグ)を使用します。
gcloud
Google Cloud CLI を使用して変数を設定するには、デプロイ時に --set-build-env-vars
フラグを使用します。
gcloud beta functions deploy FUNCTION_NAME --set-build-env-vars FOO=bar FLAGS...
カンマ区切りのリストを使用して、複数のビルド環境変数を設定することもできます。
gcloud functions deploy FUNCTION_NAME --set-build-env-vars FOO=bar,BAZ=boo FLAGS...
ソース管理などで構成をファイルに保存する場合は、YAML ファイルと一緒に --build-env-vars-file
フラグを使用します。
gcloud functions deploy FUNCTION_NAME --build-env-vars-file FILE_NAME.yaml FLAGS...
*.yaml
ファイルの内容は次のとおりです。
FOO: bar
BAZ: boo
上の例で、FLAGS...
は関数のデプロイ時に渡す他のオプションを表します。deploy
コマンドの詳細については、gcloud beta functions deploy
をご覧ください。
Google Cloud コンソール UI
ビルド環境変数は、関数を作成するときに Google Cloud コンソールで設定することもできます。
Google Cloud コンソールで関数の概要ページを開きます。
[関数を作成] をクリックします。
関数の必須フィールドを入力します。
[ランタイム、ビルド、接続の設定] セクションを開きます。
[ビルド] タブを選択します。
[ビルド環境変数] セクションで、[変数を追加] をクリックして名前と値を追加します。
ビルド環境変数の更新
既存の関数のビルド環境変数を更新することもできます。これは非破壊的なアプローチです。ビルド環境変数の変更または追加は行いますが、削除は行いません。
gcloud
Google Cloud CLI を使用して変数を設定するには、デプロイ時に --update-build-env-vars
フラグを使用します。
gcloud functions deploy FUNCTION_NAME --update-build-env-vars FOO=bar
カンマ区切りのリストを使用して、複数のビルド環境変数を更新することもできます。
gcloud functions deploy FUNCTION_NAME --update-build-env-vars FOO=bar,BAZ=boo
Google Cloud コンソール UI
Google Cloud コンソールを使用してビルド環境変数を更新するには:
Google Cloud コンソールで関数の概要ページを開きます。
既存の関数をクリックして、その詳細ページに移動します。
[編集] をクリックします。
[ランタイム、ビルド、接続の設定] セクションを開きます。
[ビルド] タブを選択します。
[ビルド環境変数] セクションで必要な変更を加えます。
ビルド環境変数の削除
gcloud
ビルド環境変数を個別に削除する場合は、デプロイ時に --remove-build-env-vars
フラグを使用します。
gcloud functions deploy FUNCTION_NAME --remove-build-env-vars FOO,BAZ
あるいは、--clear-build-env-vars
フラグを使用して、以前に設定したすべてのビルド環境変数をクリアします。
gcloud functions deploy FUNCTION_NAME --clear-build-env-vars
Google Cloud コンソール UI
Google Cloud コンソールを使用してビルド環境変数を削除するには:
Google Cloud コンソールで関数の概要ページを開きます。
既存の関数をクリックして、その詳細ページに移動します。
[編集] をクリックします。
[ランタイム、ビルド、接続の設定] セクションを開きます。
[ビルド] タブを選択します。
[ビルド環境変数] セクションで、Key-Value ペアの横にあるごみ箱アイコンをクリックして削除します。
変数のライフサイクル
すべての環境変数は Cloud Run 関数のデプロイにバインドされています。デプロイを行うときにのみ、環境変数を設定または変更できます。なんらかの理由でデプロイに失敗すると、環境変数の変更は適用されません。環境変数を変更するには、デプロイに成功する必要があります。
ベスト プラクティスと予約済みの環境変数
環境変数は、関数が使用するランタイムに応じて自動的に設定されます。この設定はランタイムのオペレーティング システム(DEBIAN_FRONTEND
、SHLVL
、PATH
)と言語ランタイム(NODE_ENV
、VIRTUAL_ENV
、GOPATH
)で決まります。
環境によって提供される環境変数(自動的に設定される環境変数にある変数を除く)は、将来のランタイム バージョンで変更される可能性があります。明示的に設定していない環境変数に依存しないでください。また、このような変数は変更しないことをおすすめします。
環境から提供される環境変数を変更すると、予期しない結果が生じる可能性があります。こうした環境変数を変更しようとすると、ブロックされる可能性があります。最悪の場合、関数を開始できない場合もあります。競合を回避するため、環境変数の前に一意のキーを付けることをおすすめします。
また、次の環境変数は使用できません。
キー | 説明 |
---|---|
空('') | キーは空の文字列にできません。 |
= |
キーに「=」文字を使用できません。 |
X_GOOGLE_ |
キーの接頭辞として X_GOOGLE_ を使用することはできません。 |
サイズの上限
ランタイム環境変数名と個々の関数が使用する値の合計バイト数は 32 KiB に制限されています。この合計サイズ内であれば、個々のキーまたは値に上限はありません。
ビルド環境変数の場合、定義文字列 foo=bar
が 64 KiB の上限まで、最大 100 変数を定義できます。
シークレットの管理
環境変数は関数の構成に使用できますが、データベースの認証情報や API キーなどの機密情報の格納には適しません。 このような機密性の高い値は、ソースコードや外部の環境変数以外の場所に保存する必要があります。一部の実行環境やフレームワークでは、環境変数の内容がログに送信されることがあります。YAML ファイル、デプロイ スクリプト、ソース管理に重要な認証情報は保存しないでください。
シークレットを保存する場合は、Secret Manager を使用することをおすすめします。Secret Manager に保存されているシークレットにアクセスするように Cloud Run functions を構成するには、シークレットを構成するをご覧ください。Cloud KMS と Cloud Run 関数の固有の統合はありません。
ポータビリティ
現在、Cloud Run 関数で機能する環境変数は、別のランタイム環境(別の言語や、特定のツールやライブラリなど)で動作しない可能性があります。また、別のプラットフォームで受け入れられないこともあります。
環境変数の POSIX 標準に準拠すると、このような問題を回避できます。Google Cloud コンソールを使用して変数を編集する場合、ポータビリティに問題がある可能性がある変数を定義すると、Google Cloud コンソールから警告が表示されます(デプロイは可能です)。原則として、移植可能な文字セットで定義されているように、環境変数キーは大文字、数字、<underscore>
(_
)のみで構成し、数字で始めないことをおすすめします。