【问题标题】:How to include storage service account key in function如何在函数中包含存储服务帐户密钥
【发布时间】:2019-10-17 19:36:40
【问题描述】:

我正在尝试将服务帐户密钥包含到我的存储功能中,以便能够通过此处过时的示例获得长期签名的 url

https://github.com/firebase/functions-samples/blob/b404482342906ee1b46dddb4c75667685ab098a1/generate-thumbnail/functions/index.js#L21

我从 IAM 下载了 JSON 格式的密钥。我试图将它保存在我的函数旁边

-functions/storage/resizeProfileImg.js

-functions/storage/service-account-credentials.json

-functions/index.js

-functions/admin.js

resizeProfileImg.js 是我的函数并像这样调用它

const { Storage } = require('@google-cloud/storage');
const storage = new Storage({ projectId: projectId ,keyFilename: './service-account-credentials.json'})

但在部署后触发该功能时出现错误

错误:ENOENT:没有这样的文件或目录,打开 '/srv/service-account-credentials.json'

我什至尝试像这样将它添加到常量中

const serviceAccountCredentials = require('./accountKey/service-account-credentials.json')

const { Storage } = require('@google-cloud/storage');
const storage = new Storage({ projectId: projectId ,keyFilename: serviceAccountCredentials})

然后我得到一个错误

TypeError:路径必须是字符串。收到 { type: 'service_account',...

知道如何正确地做到这一点

【问题讨论】:

  • 如果您认为示例已过时,请在 GitHub 上的该 repo 上记录错误请求。
  • 您能否编辑问题以准确显示您所做的事情并没有按照您的预期工作?具体说明您的项目是如何组织的以及您将文件放置在何处。任何人都应该能够通过您显示的步骤重现问题。
  • 还有更多过时的例子。唯一的问题是 const gcs = require('@google-cloud/storage') 应该是这样 *** const { Storage } = require('@google-cloud/storage'); const storage = new Storage({ projectId: projectId})**
  • @DougStevenson 我已经编辑了我的问题...请查看是否有足够的信息或者您是否需要更多信息
  • 对不起,我还不清楚你的项目目录结构是什么样的。

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


【解决方案1】:

在 Cloud Functions 中,当前目录 . 不是您的源文件所在的位置。这是函数文件夹的部署位置。由于您的凭据文件位于名为“storage”的子目录中,因此您需要在路径中使用它。

const serviceAccountCredentials = require('./storage/service-account-credentials.json')

【讨论】:

  • 非常感谢。现在可以了。没有你,我可能永远也搞不明白。希望这将有助于签名的 url 到期日期。再次感谢您
猜你喜欢
  • 1970-01-01
  • 2019-06-12
  • 2019-09-17
  • 2017-05-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 2017-08-19
  • 2022-01-19
相关资源
最近更新 更多