Google云端存储权限问题

时间:2019-03-29 09:45:03

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

从Cloud Functions执行任何Google Cloud Storage操作时出现错误。我不断收到错误[project-id]@appspot.gserviceaccount.com does not have storage.buckets.get。我已经赋予服务管理员不同的角色,包括editorstorage adminstorage 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}`);
  });
};

1 个答案:

答案 0 :(得分:0)

我对您的代码做了一些修改,并创建了一个Node.js 8 HTTP触发的Google Cloud Function,该函数已正确执行并检索了存储桶的ACL。请按照以下步骤操作,它也同样适用:

  1. 使用您选择的名称创建一个新的Google Cloud Function。
  2. 触发HTTP
  3. 运行时Node.js 8
  4. package.json中,将所有内容替换为:
{
  "name": "sample-http",
  "version": "0.0.1",
  "dependencies": {
     "@google-cloud/storage" : "^2.4.3" 
  }
}
  1. 要执行的功能下,添加getAClGoogleCloudStorage
  2. index.js内用this code from GitHub替换所有代码。
  3. 单击CREATE

成功创建后,转到Cloud Function的详细信息页面,然后单击Trigger选项卡。单击为触发器提供的URL,您应该看到Execution finished!作为响应。

在查看Cloud Function的日志时,您会注意到列出的存储桶的OWNER ...,READER ... ACL。

我已经测试了上面的代码,并且在没有任何访问权限问题的情况下都能正常工作。