无法从云功能中的谷歌存储下载文件?



我试图执行.docx文件信息的简单下载,以便我可以稍后在我的云函数中处理它。我一直在将整个Google平台用于多个项目,但从未遇到过在服务器端下载的需要,现在我需要,我只是不能。

以下一段代码不起作用,它只是发送超时作为响应(如果我尝试捕获它或其他东西,我什至没有收到错误(:

var bucket = admin.storage().bucket("gs://myBucket.com");
return bucket.file("001Lineales/4x3-1/1000.docx").download().then((contents)=>{
var buffer = contents[0];
//I never get into this point
}).catch((error)=>{
//No error
})

我尝试使用本地 NodeJs 脚本并按预期工作。还尝试执行readStream()下载但没有运气,该功能在任何下载文件的尝试中都会挂起。

return new Promise((resolve,reject)=>{
var archivo = bucket.file(selectedCategory).createReadStream();
var array = [];
//Under here, never happens
archivo.on('data', (d) => {array.push(d)}).on("end",()=>{
var newbuff = Buffer.concat(array);
resolve(newbuff)
})
})

文件权限读/写是公开的。主要问题是调试很困难,因为我无法在本地模拟器中执行此功能。

我能做什么?提前谢谢。

编辑:

使用模拟器仔细检查本地调用,出现以下错误:

Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object.

仔细检查已分配给云函数的服务帐户帽子,以及是否已授予其所需的权限。

我认为Storage Object Viewer会为您提供将文件读取缓冲区所需的内容。

默认情况下,如果您没有更改它,则会使用 AppEngine 的默认服务帐户,我认为该帐户无法访问存储。

最新更新