BETA

Functions for Firebaseでプロジェクトでサービスアカウントを切り替える

投稿日:2019-05-25
最終更新:2019-05-29

Functions for Firebaseでは一部のAPIにアクセスする為にサービスアカウントが必要になります。
でも、検証環境など複数プロジェクトを持っている場合は、このサービスアカウントを切り替える必要があります。正しい方法は分からないですが、以下のようにしてます。

サービスアカウント

切り替えたい2つのサービスアカウントを用意します。プロジェクトのIDを含めてください。例えば

  • service-account.my-service.json
  • service-account.my-service-dev.json

ディレクトリ構成

ディレクトリ構成を以下のようにしてます。src/はTypeScriptで、index.jsはJavaScriptです。

  • src/
  • lib/
  • index.js
  • firebase.json
  • service-account.my-service.json
  • service-account.my-service-dev.json

firebase.jsonの中身です。

{  
  "functions": {  
    "source": ".",  
    "ignore": [".git", ".idea", "node_modules", "src", "yarn.lock"]  
  }  
}  

index.jsを書き換える

次に、index.jsを書き換えます。projectIdを用いて、サービスアカウントとdatabaseURLを書き換えてます。

const admin = require('firebase-admin');  

const FUNCTION_NAME = process.env.FUNCTION_NAME;  

if (FUNCTION_NAME) {  
  const projectId = process.env.GCLOUD_PROJECT;  
  const serviceAccount = require(`./service-account.${projectId}.json`);  
  admin.initializeApp({  
    credential: admin.credential.cert(serviceAccount),  
    databaseURL: `https://${projectId}.firebaseio.com`  
  });  
}  

if (!FUNCTION_NAME || FUNCTION_NAME === 'createUser') {  
  exports.createUser = require('./lib/createUser');  
}  

さいごに

Functions for Firebase以外へのデプロイを考えている場合はこちらを参考にしてください。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

コンビニでバイトしてます。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう