Firebase functions に環境変数を設定してみる

flatfisher
google-cloud-jp
Published in
4 min readJun 19, 2018

本業や趣味でGCP, Actions on Google, Androidなどの技術を触っている fish です🐟この記事ではFirebase functionsに環境変数を設定する方法を紹介したいと思います。API Keyなどを大切な情報を管理したい時などに便利です。

紹介内容

  • Firebase functionsに環境変数を設定する
  • 配列を設定する
  • 環境変数を削除する
  • 別プロジェクトから環境変数を clone する
  • 設定した環境変数をコードから取得する

対象者

  • Firebase functionsを試したことがある人
    Hello Worldの表示までやったことがあれば大丈夫です
  • 環境変数をまだ設定したことがない人

前準備
Firebase functions を設定したプロジェクトを準備してください。(firebase deploy — only functions 実行できるプロジェクト)

Firebase functionsに環境変数を設定する
まずは現在の環境設定を下記のコマンドで確認してみましょう。

firebase functions:config:get

初期状態であれば {}と返ってくるはずです。
では例として `API_KEY` という名の環境変数を登録してみましょう。`337aeb7a-00db-4f83–85dd-8f50f9cb6a41` こんな感じのkeyを保存してみます。下記のコマンドで環境変数を登録します。

firebase functions:config:set api.key="337aeb7a-00db-4f83-85dd-8f50f9cb6a41"

先程の確認コマンドで以下の結果が返ってくれば成功です。

{
"api": {
"key": "337aeb7a-00db-4f83-85dd-8f50f9cb6a41"
}
}

配列を環境変数として設定する
次は配列を環境変数として設定してみたいと思います。例として `urls` という名の配列を登録してみたいと思います。配列を作成するには少々手間ですが index を指定する必要があります。
下記のコマンドで配列を登録します。

firebase functions:config:set \ api.urls.0="https:sample.com/v1/api/post" \
api.urls.1="https:sample.com/v1/api/get"

確認コマンドで以下の結果が返ってくれば成功です。

{
"api": {
"key": "337aeb7a-00db-4f83-85dd-8f50f9cb6a41",
"urls": [
"https:sample.com/v1/api/post",
"https:sample.com/v1/api/get"
]
}
}

環境変数を削除する
次に特定の環境変数を削除してみます。まずは削除予定のダミー変数を作成します。

firebase functions:config:set foo.bar="dummy"

確認コマンドで以下の結果が返ってくれば成功です。

{
"foo": {
"bar": "dummy"
},
"api": {
"urls": [
"https:sample.com/v1/api/post",
"https:sample.com/v1/api/get"
],
"key": "337aeb7a-00db-4f83-85dd-8f50f9cb6a41"
}
}

下記のコマンドでfooを削除します。

firebase functions:config:unset foo

確認コマンドで以下の結果が返ってくれば成功です。

{
"api": {
"urls": [
"https:sample.com/v1/api/post",
"https:sample.com/v1/api/get"
],
"key": "337aeb7a-00db-4f83-85dd-8f50f9cb6a41"
}
}

別プロジェクトから環境変数を clone する
別プロジェクトから clone する場合は 別プロジェクトのIDを指定します。
下記コマンドで別プロジェクトから環境変数をcloneします。

firebase functions:config:clone --from <fromProject>

設定した環境変数をコードから取得する
設定した環境変数は下記のように取得します。これで安全にAPI KEYなどを管理することができそうです😁

--

--