如何通过 Firebase Cloud Functions 上的 .firebaserc 切换到另一个 serviceAccountKey.json?

How do I switch to another serviceAccountKey.json via .firebaserc on Firebase Cloud Functions?

在我的 .firebaserc 文件中,我提供了两个 Firebase 数据库,一个用于开发,一个用于生产:

{
  "projects": {
    "default": "db-dev",
    "production": "db-prod"
  }
}

所以当我部署到生产环境时,我会 运行:

firebase use production
firebase deploy --only functions

我的问题是我也在我的一个云函数中使用云存储,所以我有两个不同的 serviceAccountKey.json 文件,我将在此处使用:

const gcs = require('@google-cloud/storage')({ keyFilename: 'serviceAccountKey.json' })

我的问题是,当我通过 firebase use 切换到另一个数据库时,如何自动切换到另一个 serviceAccountKey.json

firebase use 无法像这样自动执行任何操作。它只是将一个 Firebase 项目附加到您的本地项目文件夹。它只是为您管理.firebaserc

您将不得不寻找另一种方法来完成这项工作。也许写一个脚本来管理凭据和 firebase use?

每个 Firebase 项目都有自己的 Environment Configuration。解决方案是将服务帐户密钥存储在那里。

为每个 Firebase 项目设置服务帐户密钥:

firebase use default
firebase functions:config:set admin.key="serviceAccountKey-dev.json"

firebase use production
firebase functions:config:set admin.key="serviceAccountKey-prod.json" 

环境配置将通过functions.config()提供:

const functions = require('firebase-functions')
const gcs = require('@google-cloud/storage')({ 
  keyFilename: functions.config().admin.key 
})