从Cloud Functions执行任何Google Cloud Storage操作时出现错误。我不断收到错误[project-id]@appspot.gserviceaccount.com does not have storage.buckets.get
。我已经赋予服务管理员不同的角色,包括editor
,storage admin
和storage object admin
,但似乎不起作用。
下面是测试功能。
exports.test = async (req, res) => {
const {Storage} = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
// Gets the ACL for the bucket
const [acls] = await storage.bucket('sharedbox').acl.get();
acls.forEach(acl => {
console.log(`${acl.role}: ${acl.entity}`);
});
};
答案 0 :(得分:0)
我对您的代码做了一些修改,并创建了一个Node.js 8 HTTP触发的Google Cloud Function,该函数已正确执行并检索了存储桶的ACL。请按照以下步骤操作,它也同样适用:
HTTP
。Node.js 8
。package.json
中,将所有内容替换为:{
"name": "sample-http",
"version": "0.0.1",
"dependencies": {
"@google-cloud/storage" : "^2.4.3"
}
}
getAClGoogleCloudStorage
。index.js
内用this code from GitHub替换所有代码。CREATE
。成功创建后,转到Cloud Function的详细信息页面,然后单击Trigger
选项卡。单击为触发器提供的URL,您应该看到Execution finished!
作为响应。
在查看Cloud Function的日志时,您会注意到列出的存储桶的OWNER ...,READER ... ACL。
我已经测试了上面的代码,并且在没有任何访问权限问题的情况下都能正常工作。