问题描述
我正在尝试将服务帐户密钥包含到我的存储功能中,以便能够通过遵循此处的过时示例来获取长期签名的URL
I'm trying to include service account key into my storage function to be able to get long lived signed url by following out of date example here
我已经从IAM下载了JSON格式的密钥.我试图将其保存在我的功能旁边
I have downloaded my key from IAM which is in JSON format. I have tried to save it right next to my function
-functions/storage/resizeProfileImg.js
-functions/storage/service-account-credentials.json
-functions/index.js
-functions/admin.js
其中resizeProfileImg.js是我的函数,并且这样调用
where resizeProfileImg.js is my function and call it like this
const { Storage } = require('@google-cloud/storage');
const storage = new Storage({ projectId: projectId ,keyFilename: './service-account-credentials.json'})
但是在部署后,当函数被触发时,我得到了一个错误
but after deployment when the function is triggered then I get an error
错误:ENOENT:没有此类文件或目录,请打开"/srv/service-account-credentials.json"
我甚至试图像这样将其添加为常量
I have even tried to add it in constant like this
const serviceAccountCredentials = require('./accountKey/service-account-credentials.json')
const { Storage } = require('@google-cloud/storage');
const storage = new Storage({ projectId: projectId ,keyFilename: serviceAccountCredentials})
但是我得到一个错误
TypeError:路径必须是字符串.已收到{类型:"service_account",...
任何想法如何正确执行此操作
Any idea how to do this properly
推荐答案
在Cloud Functions中,当前目录.
不在您的源文件所在的位置.这是功能文件夹的部署位置.由于您的凭据文件位于名为存储"的子目录中,因此您需要在路径中使用该文件.
In Cloud Functions, the current directory .
isn't where your source file is located. It's where the functions folder was deployed. Since your credentials file is in a subdirectory called "storage", you will need to use that in the path.
const serviceAccountCredentials = require('./storage/service-account-credentials.json')
这篇关于如何在功能中包括存储服务帐户密钥的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!