0

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

1 回答 1

0

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

  1. 使用您选择的名称创建一个新的 Google Cloud 函数。
  2. 触发HTTP
  3. 运行时Node.js 8
  4. package.json将所有内容替换为:
{
  "name": "sample-http",
  "version": "0.0.1",
  "dependencies": {
     "@google-cloud/storage" : "^2.4.3" 
  }
}
  1. Function 下执行add getAClGoogleCloudStorage
  2. 在里面用来自 GitHubindex.js的代码替换所有代码。
  3. 点击CREATE

创建成功后,进入云函数详情页面,点击Trigger选项卡。单击为触发器提供的 URL,您应该会看到Execution finished!响应。

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

我已经测试了上面的代码,它没有给我任何访问权限问题。

于 2019-04-01T12:19:20.660 回答