【问题标题】:Firebase initialize sdk with service account from cloud storageFirebase 使用云存储中的服务帐户初始化 sdk
【发布时间】:2021-03-12 22:00:28
【问题描述】:

我正在尝试按照此处的说明初始化我们的 sdk: https://firebase.google.com/docs/admin/setup#initialize-sdk

基本上,我创建了一个服务帐户并将该服务帐户的随附 json 存储在云存储中。伟大的。现在示例说我应该通过以下方式引用该 Json:

将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为 包含您的服务帐号密钥的 JSON 文件的文件路径

但是,我们不会将文件存储在这些云功能的本地,而是将其存储在云存储中。我们如何指定非本地文件的路径?

【问题讨论】:

    标签: firebase google-cloud-functions google-cloud-storage firebase-admin


    【解决方案1】:

    Admin SDK 不支持远程配置。它必须是本地的,无论是在磁盘上还是在内存中。您必须编写代码以某种方式从存储桶下载配置,然后将其提供给 SDK。

    【讨论】:

    • 好吧,这很奇怪。云函数是无服务器的,所以设计一些想要检查本地文件系统的东西是很奇怪的。每次函数运行时下载文件效率非常低。您是否有任何参考代码可供我们用来查看“通常”是如何完成的?
    • 您通常将凭据与函数源代码一起部署在一个文件中(如您在一些官方示例中所见),以便可以在本地访问它。或者您可以使用environment config 提供它们。这两种选择都非常常见。
    • 官方示例示例:12345。 5 点后我厌倦了 grepping,但你可以找到更多。或者,如果需要,您始终可以使用项目的默认服务帐户。但这会让你得到你想要的。
    • 您的第一条评论提到了 Cloud Functions。如果您指的是 Google Cloud Functions(或任何其他 GCP 管理的运行时),那么您根本不需要服务帐户 json 文件。只有在本地或非 GCP 基础架构上运行时才需要这样做。
    • 如果您想像 Hiranya 提到的那样为您的项目使用默认服务帐户,您可以不带参数初始化 Admin SDK。但是,如果您需要一个特定的帐户,它必须通过某种方式在本地可用。
    【解决方案2】:

    为了在本地初始化 Admin SDK(未部署),您需要下载服务帐户 json 文件并使其可通过以下方式访问:

    1. 将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为路径“/home/user/serviceaccount.json”。

    2. 在函数文件中包含服务账户文件,并通过相对路径programmatically访问。

    一旦部署,就会有一个运行时服务帐户PROJECT_ID@appspot.gserviceaccount.com,并且已经设置了环境变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-14
      • 2020-12-08
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 2017-05-11
      相关资源
      最近更新 更多