環境構成の概要
FirebaseのCloud Functionsでは、サードパーティのAPIキーや調整可能な設定など、関数に追加の構成が必要な場合があります。Firebase SDKでは、プロジェクトのこのタイプのデータを簡単に保存および取得できるように、環境構成が組み込まれています。
- パラメータ化された構成(推奨)- 厳密に型指定された環境構成でエラーを防ぎ、デバッグを簡素化
- ファイルベースの環境変数 - dotenvファイルを使用して環境変数を読み込む
パラメータ化された構成
Cloud Functions for Firebaseには、コードベース内で構成パラメータを宣言として定義するインターフェースがあります。これらのパラメータ値は、関数のデプロイ時、設定時、実行時に使用できます。
デプロイ時の動作 📦
パラメータ化された構成変数を使用して関数をデプロイすると:
- Firebase CLIはローカルの.envファイルから値を読み込む
- 値が見つからない場合はプロンプトが表示される
- 入力値は.env.<project_ID>ファイルに自動保存
Secretタイプのパラメータ
defineSecret()を使用して、Cloud Secret Managerに格納されている値を持つパラメータを定義できます。セキュリティが重要な情報に最適です。
パラメータタイプと式
パラメータ化された構成はパラメータ値を厳密に型指定し、Cloud Secret Managerのシークレットもサポートします。
サポートされるタイプ:
- シークレット
- 文字列
- ブール値
- 整数
- 浮動小数点数
- List型(Node.js)
Firebaseは、関数のデプロイ時と実行時の両方でパラメータを評価します。
パラメータの使用方法 🛠️
- ランタイムオプションとして:パラメータを直接渡す
- 比較操作:組み込みの比較演算子を使用
- 実行時のみ:value()関数でアクセス
環境変数
Cloud Functions for Firebaseは、dotenvファイル形式をサポートしています。デプロイ後は、process.envインターフェース(Node.js)またはos.environ(Python)で読み取れます。
環境変数の設定手順 📋
- functions/ディレクトリに.envファイルを作成
- 必要なキーを追加(例:PLANET=Earth)
- 関数をデプロイ
Secret Managerの利用
機密情報を安全に保存するために、Firebase Cloud FunctionsはGoogle Cloud Secret Managerと統合されています。この暗号化サービスで、構成値を安全に保存できます。
シークレットの作成と使用 🔑
- Firebase CLIを使用:
firebase functions:secrets:set SECRET_NAME - シークレット値を入力
- 関数コードでrunWithパラメータを使用して参照
- 関数をデプロイ
Secret Managerの無料枠:
- 6個のアクティブなシークレットバージョンを無料で使用可能
- 1つのシークレットに対して毎月10,000回のアクセスを無料で使用可能
CLIの動作を構成
Optionsオブジェクトを使用してパラメータを構成し、値の入力を求めるCLIの動作を制御できます。
エミュレータサポート
dotenvを使用する環境構成は、ローカルのCloud Functionsエミュレータと相互運用するように設計されています。
ローカルテスト時の環境設定 🧪
.env.localファイルを設定することで、プロジェクトの環境変数をオーバーライドできます。
優先順位:.env.local > .env.プロジェクト固有 > .env
環境構成からの移行
functions.configで環境構成を使用している場合は、環境変数(dotenv形式)に移行できます。
移行手順 📤
firebase functions:config:exportコマンドを使用- 既存の環境構成を.envファイルとしてエクスポート
- 関数コードを更新:functions.configの代わりにprocess.envを使用
移行の注意点:
- すべての構成を自動で変換できるわけではありません
- 無効な場合や予約済みキーを使用している場合は名前変更が必要
- 関数コードの更新が必要