firebase - 如何使用 gcloud cli 为云函数设置配置变量
问题描述
我的 Firebase 默认服务帐户 ( xxxx@appspot.gserviceaccount.com ) 已删除且无法恢复。
因此,我创建了不同的服务帐户,现在我必须使用 gcloud CLI 使用
gcloud beta functions deploy FUNCTION_NAME --service-account=NEW_SERVICE_ACCOUNT
命令来部署功能。
如何使用 gcloud CLI 设置 firebase 配置变量,我可以通过functions.config()
.
解决方案
当您使用 Cloud Function 时,您可以在 Node 中定义可以像这样使用的环境变量
const val = process.env.KEY
要将其设置KEY=val
为云功能,您可以使用 env vars setter 参数
为了重用 Firebase functions.config()
,并通过查看源代码,它应该像这样工作(我没有测试)
- 为您的配置定义一个 JSON,如Firebase 文档的检索部分中所述
{
"someservice": {
"key":"THE API KEY",
"id":"THE CLIENT ID"
}
}
- 使其内联并将其存储为CLoud Functions 文件格式。环境变量的键必须是
FIREBASE_CONFIG
. 结果必须是这样config.yaml
的(例如命名)
FIREBASE_CONFIG: '{"someservice":{"key":"THE API KEY","id":"THE CLIENT ID"}}'
- 将文件 env vars 添加到 Cloud Function
gcloud functions deploy --env-vars-file=config.yaml ....
注意:为什么使用文件?
很好的问题,因为您也可以使用--set-env-vars
参数。2个问题
- 首先,您需要内联内容并跳过双引号
"
字符。为此,您可以这样做--set-env-vars=TEST=$(echo "'$(cat config.json | sed -z 's/\n//g')'")
- 第一个解决方案仅在您没有逗号时才有效
,
。使用逗号,gcloud 命令会丢失,即使您将 json 内联内容设置在简单的引号之间'
,它也会将其视为新的 env var 定义并失败。
因为我没有测试过,所以我很想知道这个解决方案是否有效!
推荐阅读
- c# - 有没有更好的方法通过非主键显示 DbContext 中的所有条目?
- php - 如何将此 foreach 循环限制为 10 个循环?
- php - 如何将产品添加到购物车包括尺寸和数量 php
- typescript - React + Typescript:基于 Prop 的动态类
- python - 有没有办法将类实例传递给 dunder init?
- javascript - then 内部嵌套的 fetch 方法
- javascript - 如何使用 JavaScript 中的单击事件更改 HTML 画布中的线宽
- c# - 有没有办法用 List 制作扩展方法
,方法(T)作为参数? - r - 在 xml2 中返回具有相同名称的节点
- python - Django 管理员和 on_delete=PROTECTED 的单元测试之间的结果不一致