tl;dr
-
firebase deploy
コマンドを使いたいなら、config 機能に環境変数の情報を詰め込んで、CloudFunction の関数内で環境変数への set をする。 - gcloud コマンドを使うなら、option に渡せば OK なだけぽい(実機確認してない)
前提:注意点
- 基本的には必要ない限りは環境変数を使わないで、firebase の config 機能を使ってください。
- 3rd party 製のライブラリなどが、環境変数しか見に行かないケースなどのときはこの記事の方法を参考にすると良いかと思います。
説明
firebase deploy
コマンドでは、CloudFunction 上の環境設定を渡してあげることが出来ないようです。その代わり、環境設定に関する情報は config 系の機能で設定させる方針みたいだからです。
一応、gcloud
コマンドを見る限りだと、option 指定すればこれで環境変数を指定してデプロイすることもできるようですが、できる限り firebase から抜けたくないです。
なので、「デプロイ時に Firebase の config 機能で環境変数にセットしたい情報を渡して、プログラム上で無理やり環境変数にセットする」という流れで実現できます。
コード
デプロイコマンド
$ firebase functions:config:set api.key=abcdefg && \
firebase deploy --only functions
実際のコード例
import * as functions from "firebase-functions";
const bootstrap = () => {
process.env["API_KEY"] =
proccess.env["API_KEY"] || functions.config().api?.key;
};
const onCreateSomething = () => {
// ...
bootstrap();
// ...
};
ちなみに、予約後となっている env への上書きは基本的に禁止されているので注意です。上書きすると、CloudFunction 自体が正常に動作しない、または実行されないなどの可能性があります。
参考:デプロイするときのコマンド例
デプロイするときのコマンドは下記のissueにいろいろな方法を書かれてるので、良さそうなのをピックアップするのが良いかと。