GCloud 命令行正在从不同的帐户错误执行

GCloud command line is executing from different account error

我有两个 GCloud 帐户,考虑 x 和 y。 我 运行 命令 gcloud config set account x 因为只有帐户 x 可以访问该特定的 gcloud 项目。 但是每次我 运行 本地工作任务,例如: 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."
 }
}

在我看来,命令行正在访问 y 帐户,即使我已登录到 x 帐户。我仔细检查了我是否登录了可以访问正确项目的正确帐户。

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

如果您想使用帐户 y 登录,使用 gcloud auth login y 命令应该可以解决问题。我了解到这是你本地的开发环境,所以你这样做之后应该没有问题。

同样,在 Ml 引擎中,建议使用 gcloud ml-engine local train 命令将作业 运行 到 运行 本地作业(Documentation on this), you can see this example 如何做吧。

我 运行 试图通过 API.

将一些文件上传到 GCS

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

修复:

gcloud auth application-default login 接下来是授权流程。

像@joan grau noel 提到的那样为我修复了它。我必须通过新的身份验证流程才能允许通过浏览器访问 Auth Library。将默认服务帐户更改为我需要的帐户后,错误停止了。

gcloud auth revoke --all

只需执行 about 命令并使用

重新登录
gcloud auth login

完成,之后享受与所需用户一起执行命令的乐趣。