尝试创建“传输”以将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.
答案 0 :(得分:0)
该错误清楚表明在源存储区上缺少权限。我建议您确认“源”存储桶上的所有者具有权限storage.objects.getIamPolicy(IAM&admin-> IAM菜单->按所有者的电子邮件地址过滤->检查其角色)。然后,您可以检查角色是否具有该权限,storage.objects.getIamPolicy(转到IAM&admin-> Roles,然后搜索特定角色->单击它,它会显示分配的权限列表。确保storage.objects.getIamPolicy是为角色列出的权限之一
同时,要使您能够授予对特定存储桶的访问权限,您的帐户角色必须是Storage Admin。因此,如果您的帐户不具有该角色,则需要具有该角色的人才能授予访问权限或对存储桶进行其他控制
答案 1 :(得分:-1)
我希望您自己找到了解决方案。 但是,对于任何人都遇到相同错误消息的情况,我试图从云控制台设置传输时都收到了此消息。我之前在这两个存储桶之间进行了转移,但没有更改转移的名称,因此第二次尝试使用此建议的名称与先前的相同。我将转移名称更改为唯一名称,这为我解决了问题。
不知道为什么我不断收到此错误消息是因为权限不属于问题。