问题似乎与另一篇文章相似,但对我来说却有所不同。因为我检查了testIamPermission
,返回的信息表明我已获得所需的所有权限,但仍然收到权限不足。
这是我收到的:
{'storage.buckets.get' : true}
{'storage.buckets.getIamPolicy' : true}
{'storage.objects.create' : true}
{'storage.objects.delete' : true}
{'storage.objects.get' : true}
{'storage.objects.getIamPolicy' : true}
{'storage.objects.list' : true}
{'storage.objects.setIamPolicy' : true}
{'storage.objects.update' : true}
我用来测试的代码:
googleBucket.iam.testPermissions([testPermissions], function(err, permissions) {
if(!err)
console.log(permissions);
})
我错过的权限:
'storage.buckets.create',
'storage.buckets.delete',
'storage.buckets.list',
'storage.buckets.setIamPolicy',
'storage.buckets.update',
我对创建对象拥有所有权限感到非常困惑,但仍然抛出权限不足。我使用的api只是在存储桶中上传文件。我错过了任何许可吗? (服务器位于Google Cloud Storage的同一项目中的Google Compute Engine)
答案 0 :(得分:2)
哪个用户运行脚本会很有趣。
因为,似乎运行脚本的用户/服务仅具有viewer
角色,而没有editor
角色。如果您已为适当的服务帐户分配了适当的角色,请签入IAM
。您可能还需要使用云外壳登录到该GCE
实例,然后添加这些服务帐户凭据。在云外壳中,右上角有一个微小的“上传”按钮,可用于将凭据json
文件上传到VM。 documentation还将逐步解释这一点。
答案 1 :(得分:0)
您的 Google Cloud Compute Engine 实例的服务帐户应该与用于访问 Google Cloud Storage Bucket 的帐户相同。
如果不匹配,请停止实例,从下拉框中选择正确的服务帐户来更改服务帐户(在下拉列表中将显示仅链接到当前项目的服务帐户)。
此外,请确保所选的服务帐户具有正确的Google Cloud Storage访问权限。