如何通过 Firebase Cloud Functions 上的 .firebaserc 切换到另一个 serviceAccountKey.json?
Posted
技术标签:
【中文标题】如何通过 Firebase Cloud Functions 上的 .firebaserc 切换到另一个 serviceAccountKey.json?【英文标题】:How do I switch to another serviceAccountKey.json via .firebaserc on Firebase Cloud Functions? 【发布时间】:2018-09-29 13:15:45 【问题描述】:在我的 .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
?
【问题讨论】:
【参考方案1】:firebase use
无法像这样自动执行任何操作。它只是将一个 Firebase 项目附加到您的本地项目文件夹中。它只是为您管理.firebaserc
。
您将不得不找到另一种方法来完成这项工作。也许编写一个脚本来管理凭据和firebase use
?
【讨论】:
明白。我将添加一个脚本到我的package.json
。【参考方案2】:
每个 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
)
【讨论】:
注意:运行functions:config:set
后,您必须重新部署函数以使新配置在 Firebase 中可用。
this answer 还展示了在本地测试云函数时如何使用functions.confg()
。以上是关于如何通过 Firebase Cloud Functions 上的 .firebaserc 切换到另一个 serviceAccountKey.json?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Firebase Cloud Functions 中确认 PubSub 消息?
Flutter Firebase Cloud Messaging 如何自动关闭/取消通知?
Cloud Firestore 安全规则只允许从 Firebase 函数写入
如何在 Firebase Cloud 函数中调用导出的 https Firebase Cloud 函数?