我有以下代码示例,它接收一个缓冲图像和它的MIME类型,然后将其上传到Google Cloud Storage。
一切都正常工作,但由于某种原因,我的Google Cloud Function从Storage API获取403错误。
我该怎么做才能让我的GC函数访问GC存储?
我在文档中找不到任何可以向我展示如何做到这一点的内容。
const { Storage } = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
// Lists all buckets in the current project
const buckets = storage.getBuckets();
exports.uploadImage = (bucketName, fileName, imageBuffer, mimeType) => {
return new Promise((resolve, reject) => {
let bucket = storage.bucket(bucketName);
let file = bucket.file(fileName);
file.save(imageBuffer,
{
metadata: { contentType: `image/${mimeType}` },
},
((error) => {
error ? reject(error) : resolve()
})
);
})
}
这是我收到的错误信息
{"code":403,"errors":[{"domain":"global","reason":"forbidden","message":"directed-galaxy-221521@appspot.gserviceaccount.com无法访问blog/e33f9c9d-65f0-4a7f-8332-29846f770e6d,没有storage.objects.create权限。"}],"message":"directed-galaxy-221521@appspot.gserviceaccount.com无法访问blog/e33f9c9d-65f0-4a7f-8332-29846f770e6d,没有storage.objects.create权限。"}
directed-galaxy-221521@appspot.gserviceaccount.com
服务账户Storage Admin
角色。当我选择它时,它显示该账户对存储资源拥有完全控制权。在启用服务时,我没有选择ACL
选项。 - Miguel Coder