尝试通过Java客户端访问Google云端服务时,我目前收到以下错误:
Caused by:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403
Forbidden
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "xyz.iam.gserviceaccount.com does not have
storage.buckets.list access to project 123456.",
"reason" : "forbidden"
} ],
"message" : "xyz.iam.gserviceaccount.com does not have
storage.buckets.list access to project 123456."
}
到目前为止,我有:
如何为给定项目的给定列表或api提供服务帐户的访问权限?
答案 0 :(得分:2)
该消息非常具体,不会留下太多疑问,但如果出现问题,请分享当前分配给您的服务帐户的角色:
“xyz.iam.gserviceaccount.com没有 storage.buckets.list访问项目123456。“
您在https://console.cloud.google.com/iam-admin/iam/project
中分配给服务帐户的角色可能没有storage.buckets.list
访问权限。
要查看特定角色是否具有storage.buckets.list
访问权限,请在https://console.cloud.google.com/iam-admin/roles
中搜索访问权限。这将输出具有此访问权限的角色列表,您可以查看您的服务帐户是否具有其中一个。
答案 1 :(得分:1)
也可能是您设置了一个不存在的项目。例如,通过在gcloud cli gcloud config set project personal
上运行以下命令,而项目的实际ID为personal-267000,如下所示
gcloud projects list | grep personal
personal-267000 personal 203784673875
因此,gcloud config set project personal-267000
正确设置后,您的命令应该可以正常工作。测试最简单的方法是触发以下cli命令gsutil ls
。不要忘记确保您也使用了想要的帐户:gcloud config configurations list
答案 2 :(得分:0)
如果您项目中使用的存储桶,您可以随时尝试以您的用户身份运行gsutil ch
command:
gsutil acl ch -u your-service-account@example.com:WRITE gs://your-bucket
答案 3 :(得分:0)
您需要为服务帐户提供“存储管理员”访问权限。可以在https://console.cloud.google.com/iam-admin/iam?project={your-project}
中找到单击“继承”下的铅笔以编辑权限。