LoginSignup
0
0

More than 3 years have passed since last update.

Firebase: Cloud Function の Trigger にてconfigではなくprocess.envの環境変数を設定する

Last updated at Posted at 2020-05-22

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にいろいろな方法を書かれてるので、良さそうなのをピックアップするのが良いかと。

REF

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0