GCloud命令行正在从其他帐户执行错误

时间:2019-01-10 11:37:05

标签: python google-cloud-platform google-cloud-storage google-cloud-ml

我有两个GCloud帐户,请考虑x和y。 由于只有帐户x有权访问该特定的gcloud项目,因此我运行了gcloud config set account x命令。 但是每次我执行本地工作任务时,例如: python -m trainer.task --bucket=bucket-name --output_dir=outputdir --job-dir=./tmp --train_steps=200 我收到以下错误:

tensorflow.python.framework.errors_impl.PermissionDeniedError: Error executing an HTTP request: HTTP response code 403 with body '{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "forbidden",
    "message": "y does not have storage.objects.create access to bucket-name."
   }
  ],
  "code": 403,
  "message": "y does not have storage.objects.create access to bucket-name."
 }
}

在我看来,即使我登录了x帐户,命令行也正在访问y帐户。我再次检查了我是否已登录有权访问正确项目的正确帐户。

2 个答案:

答案 0 :(得分:1)

gcloud config set命令似乎仅影响Cloud SDK的身份验证方式。这意味着,尽管将帐户x设置为默认帐户,但API调用仍通过应用程序默认凭据进行。

如果要使用帐户y登录,请使用gcloud auth login y命令。我了解这是您当地的发展环境,因此您这样做后应该没有问题。

同样,在Ml引擎中,建议使用gcloud ml-engine local train命令运行作业以本地运行作业(Documentation on this),您可以看到this example有关如何做吧。

答案 1 :(得分:1)

我试图通过API将某些文件上传到GCS时遇到了这个问题。

似乎API使用的是默认帐户,而不是您登录的帐户。

修复:

gcloud auth application-default login 随后是身份验证流程。

这对我来说很固定,就像@joan grau noel提到的那样。我必须经过一个新的身份验证流程才能允许通过浏览器访问身份验证库。将默认服务帐户更改为我需要的帐户后,错误停止了。