要完成此转移,您需要源存储桶的“ storage.buckets.setIamPolicy”权限

时间:2019-06-04 13:58:58

标签: google-cloud-storage google-iam

尝试创建“传输”以将Google Cloud中一个存储桶的内容传输到同一所有者下的Google Cloud中的另一个存储桶时,出现此错误:

  

要完成此传输,您需要源存储桶的“ storage.buckets.setIamPolicy”权限。请存储分区的管理员授予您所需的权限,然后重试。

我不知道该怎么办。我尝试转到“存储桶->权限->添加成员-> myemail.com进行存储-> ... Admin”,但我一直在获取“ IAM策略更新失败”。

请帮助该做什么,以便我可以公开访问我的文件。

如果有帮助,我正在使用Node.js。

如果我什至试图获取照片并直接绕过它,我什至无法做到:/

const { Storage } = require('@google-cloud/storage')

const storage = new Storage({
  projectId: 'my-bucket'
})

const bucket = storage.bucket('my.bucket')


app.get('/photo/:photo.:ext', (req, res) => {
  const remoteFile = bucket.file(`photo/${req.params.photo}.${req.params.ext}`)
  remoteFile.createReadStream().pipe(res)
})

也不能这样做:

const opts = {
  includeFiles: true
};

bucket.makePublic(opts, function(err, files) {
  // `err`:
  //    The first error to occur, otherwise null.
  //
  // `files`:
  //    Array of files successfully made public in the bucket.
  console.log(arguments)
});
  

无法获取已启用“仅桶策略”的桶的旧版ACL。在https://cloud.google.com/storage/docs/bucket-policy-only上了解更多信息。

$ gsutil iam ch allUsers:objectViewer gs://my.bucket
ServiceException: 401 Anonymous caller does not have storage.buckets.getIamPolicy access to my.bucket.

2 个答案:

答案 0 :(得分:0)

该错误清楚表明在源存储区上缺少权限。我建议您确认“源”存储桶上的所有者具有权限storage.objects.getIamPolicy(IAM&admin-> IAM菜单->按所有者的电子邮件地址过滤->检查其角色)。然后,您可以检查角色是否具有该权限,storage.objects.getIamPolicy(转到IAM&admin-> Roles,然后搜索特定角色->单击它,它会显示分配的权限列表。确保storage.objects.getIamPolicy是为角色列出的权限之一

同时,要使您能够授予对特定存储桶的访问权限,您的帐户角色必须是Storage Admin。因此,如果您的帐户不具有该角色,则需要具有该角色的人才能授予访问权限或对存储桶进行其他控制

答案 1 :(得分:-1)

我希望您自己找到了解决方案。 但是,对于任何人都遇到相同错误消息的情况,我试图从云控制台设置传输时都收到了此消息。我之前在这两个存储桶之间进行了转移,但没有更改转移的名称,因此第二次尝试使用此建议的名称与先前的相同。我将转移名称更改为唯一名称,这为我解决了问题。

不知道为什么我不断收到此错误消息是因为权限不属于问题。