【问题标题】:Cloud function to run on multiple firebase projects在多个 Firebase 项目上运行的云功能
【发布时间】:2020-05-02 20:30:40
【问题描述】:

我有两个 firebase 项目(默认项目和暂存项目)。两者都在 CLI 中使用相同的别名进行初始化。

我可以成功地将所有内容部署到“默认”,并且除了功能之外的所有内容都可以成功部署到“暂存”。部署到暂存时出现 403 错误。

我使用以下代码初始化我的 firebase 管理员,该代码使用我的服务帐户 key.json 文件,因此我可以在本地运行我的函数。

// Import from Firebase
import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'

// Admin Init that supports localhost testing
const serviceAccount = require('../keys/default-key.json')
admin.initializeApp({
    credential: admin.credential.cert(serviceAccount)
})

如果我手动更改对“staging-key.json”的引用,它使用我的登台项目中的服务帐户 key.json,那么部署到登台也可以正常工作。

我的问题:我可以根据我正在部署的项目自动更改引用的 key.json 文件吗?

或者 - 有没有更好的方法来处理这种情况?

理想情况下,我只想在 CLI 中使用“firebase use”在项目和部署之间切换,而无需更改代码。

【问题讨论】:

    标签: firebase google-cloud-functions


    【解决方案1】:

    您需要找到一种方法来利用 Firebase CLI 提供的 environment configuration。这使您可以在部署中添加一些配置。如文档中所述:

    您通常需要对函数进行额外配置,例如第三方 API 密钥或可调设置。 Firebase SDK for Cloud Functions 提供了内置的环境配置,让您可以轻松地为您的项目存储和检索此类数据。

    您当然可以将您的服务帐户凭据放入环境中,因此您不必弄清楚要部署哪个文件。为方便起见,请考虑为每个部署目标(默认和暂存)编写一个部署脚本,以确定它们获得哪些值。

    【讨论】:

    • 太好了,谢谢道格!对于将来关注的任何人 - 我只是在我的函数中使用了这样的变量: const serviceAccount = require(../keys/${functions.config().env.name}-key.json) 然后为每个 firebase 项目设置 env.name。这么简单!
    猜你喜欢
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 2018-08-05
    • 1970-01-01
    • 2018-05-29
    • 2019-12-23
    相关资源
    最近更新 更多