Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 谷歌云存储-权限不足_Node.js_Google Cloud Platform_Google Cloud Storage_Google Compute Engine - Fatal编程技术网

Node.js 谷歌云存储-权限不足

Node.js 谷歌云存储-权限不足,node.js,google-cloud-platform,google-cloud-storage,google-compute-engine,Node.js,Google Cloud Platform,Google Cloud Storage,Google Compute Engine,这个问题似乎与另一篇文章相似,但对我来说不同。因为我检查了测试许可,结果显示我获得了所需的所有权限,但仍然收到权限不足 这是我收到的: {'storage.buckets.get' : true} {'storage.buckets.getIamPolicy' : true} {'storage.objects.create' : true} {'storage.objects.delete' : true} {'storage.objects.get' : true} {'storage.ob

这个问题似乎与另一篇文章相似,但对我来说不同。因为我检查了
测试许可
,结果显示我获得了所需的所有权限,但仍然收到权限不足

这是我收到的:

{'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的只是在bucket上上传一个文件。我错过了什么许可吗?(服务器位于Google Compute Engine,在Google云存储的同一个项目上)

由哪个用户运行脚本会很有趣


因为,运行脚本的用户/服务似乎只有
查看器
,而没有
编辑器
角色。如果您已将适当的角色分配给适当的服务帐户,请签入
IAM
。您可能还需要使用cloud shell登录到该
GCE
实例,并添加这些服务帐户凭据。在cloud shell中,右上角有一个小小的“上载”按钮,可用于将凭据
json
文件上载到VM中。作者也一步一步地解释了这一点。

我已经准确地找到了答案。在“创建新实例”页面中有一个名为“标识和API访问”的选项。只要从默认值切换到任何访问选项(正确配置,tho),问题就解决了

对于提供的答案,这不是GCE运行脚本的工作原理,GCE会自动将其电子邮件连接到另一个API,作为编辑器权限,并且无需将任何json挂接到在GCE上建立的实例。正如我提到的,服务器位于Google Compute Engine,在Google云存储的同一个项目上


不过,这是相当有帮助的,谢谢,请给您一个快速回答的投票:)

您的谷歌云计算引擎实例的服务帐户应该与用于访问谷歌云存储桶的帐户相匹配

如果不匹配,请停止实例,通过从下拉框中选择正确的服务帐户来更改服务帐户(仅链接到当前项目的服务帐户将在下拉列表中可见)


此外,请确保所选服务帐户具有正确的谷歌云存储访问权限。

如果实例停止,也可以对已创建的实例进行编辑。好消息,谢谢!