Cloud Run サービスには任意の環境変数を設定できます。Cloud Run は、これらの Key-Value ペアをコンテナに挿入して、コードからアクセスできるようにします。また、ソースコードから関数をデプロイするときに、Buildpack に構成情報を渡すこともできます。
環境変数は 1 つのサービスにバインドされ、Google Cloud プロジェクトの他のサービスからは参照できません。各変数はデプロイされたサービスに保存され、バインドされているサービスと同じライフサイクル内に存在します。
環境変数の最大数
Cloud Run サービスには最大 1,000 個の環境変数を設定できます。
変数のライフサイクル
すべての環境変数はサービスのデプロイにバインドされています。デプロイを行うときにのみ、環境変数を設定または変更できます。なんらかの理由でデプロイに失敗すると、環境変数の変更は適用されません。環境変数を変更するには、デプロイに成功する必要があります。
ベスト プラクティス
次のセクションでは、環境変数の構成に関するベスト プラクティスについて説明します。
シークレットを管理する
環境変数はサービスの構成に使用できますが、データベースの認証情報や API キーなどのシークレットの保存には適していません。機密性の高い値は、ソースコードや外部の環境変数以外の場所に保存する必要があります。一部の実行環境やフレームワークでは、環境変数の内容がログに送信されることがあります。また、YAML ファイル、デプロイ スクリプト、ソース管理システムに機密性の高い認証情報を保存しないことをおすすめします。環境変数は、プロジェクト閲覧者以上の権限を持つすべてのユーザーに表示されます。
シークレットを保存する場合は、Secret Manager を使用することをおすすめします。Secret Manager に保存されているシークレットにアクセスするようにサービスを構成するには、シークレットを構成するをご覧ください。
Cloud KMS と Cloud Run の固有の統合はありません。
予約済みの環境変数
コンテナ ランタイムの契約で定義されている環境変数は予約されているため、設定できません。特に、PORT
環境変数は Cloud Run によってコンテナに挿入されます。自分で設定しないでください。
関数の予約済み環境変数
Cloud Run は、関数をデプロイするときに、次のランタイム環境変数を自動的に設定します。
キー | 説明 |
---|---|
FUNCTION_TARGET |
予約済み: 実行される関数 |
FUNCTION_SIGNATURE_TYPE |
予約済み: 関数のタイプ。HTTP 関数の場合は http 、イベント ドリブン関数の場合は event です。 |
K_SERVICE |
予約済み: 関数リソースの名前 |
K_REVISION |
予約済み: 関数のバージョン ID。 |
PORT |
予約済み: 関数が呼び出されるポート。 |
環境変数は、関数が使用するランタイムに応じて自動的に設定されます。この設定はランタイムのオペレーティング システム(DEBIAN_FRONTEND
、SHLVL
、PATH
)と言語ランタイム(NODE_ENV
、VIRTUAL_ENV
、GOPATH
)で決まります。
環境によって提供される環境変数(自動的に設定される変数を除く)は、将来のランタイム バージョンで変更される可能性があります。明示的に設定していない環境変数には依存したり、それを変更しないことをおすすめします。
環境から提供される環境変数を変更すると、予期しない結果が生じる可能性があります。こうした環境変数を変更しようとすると、ブロックされる可能性があります。最悪の場合、関数を開始できない場合もあります。競合を回避するため、環境変数の前に一意のキーを付けることをおすすめします。
また、次の環境変数は使用できません。
キー | 説明 |
---|---|
空('') | キーは空の文字列にできません。 |
= |
キーに「=」文字を使用できません。 |
X_GOOGLE_ |
キーの接頭辞として X_GOOGLE_ を使用することはできません。 |
関数の変数サイズの上限
ランタイム環境変数名と個々の関数が使用する値の合計バイト数は 32 KiB に制限されています。この合計サイズ内であれば、個々のキーまたは値に制限はありません。
ビルド環境変数の場合、定義文字列 foo=bar
が 64 KiB の上限まで、最大 100 変数を定義できます。
関数でポータブルな環境変数を使用する
関数で機能する環境変数は、別のランタイム環境(別の言語や、特定のツールやライブラリなど)で動作しない可能性があります。また、別のプラットフォームで受け入れられないこともあります。
環境変数の POSIX 標準に準拠すると、このような問題を回避できます。Google Cloud コンソールを使用して変数を編集する場合、ポータビリティに問題がある可能性がある変数を定義すると、Google Cloud コンソールから警告が表示されます(デプロイは可能です)。移植可能な文字セットで定義されているように、環境変数キーは大文字、数字、<underscore>
(_
)のみで構成し、数字で始めないことをおすすめします。