1

歌文档说要导出GOOGLE_APPLICATION_CREDENTIALS带有服务帐户 JSON 密钥路径的 env var,gcloud 将使用它。我无法让它工作。

我的命令是:

GOOGLE_APPLICATION_CREDENTIALS=/home/ubuntu/.config/google-creds.json bq ls

这只会带来一个错误:

您当前没有选择活动帐户。请运行:

$ gcloud 身份验证登录

获取新凭据,或者如果您已经使用其他帐户登录:

$ gcloud 配置设置帐户 ACCOUNT

选择要使用的已通过身份验证的帐户。

gcloud -v给出:

Google Cloud SDK 92.0.0

bq 2.0.18
bq-nix 2.0.18
core 2016.01.12
core-nix 2015.11.24
gcloud
gsutil 4.16
gsutil-nix 4.15

我做错了什么,我该如何解决这个问题?我需要gsutilbq使用这个文件。我正在处理多个项目,因此无法特别激活任何一个。

4

1 回答 1

10

你试过gcloud auth activate-service-account吗?:

gcloud auth activate-service-account --key-file google-creds.json

(似乎命令行工具并没有沿着整个凭证发现链进行,就像 gcloud 在代码中用作库时所做的那样。)


如果您有几个需要使用的配置(例如身份验证、项目 ID),您可以设置配置。例如,如果您有两个想要使用的服务帐户凭据 - 调用它们sa1.json并且sa2.json- 您可以执行以下操作:

$ gcloud config configurations create proj1
$ gcloud config configurations activate proj1
$ gcloud auth activate-service-account --key-file sa1.json

$ gcloud config configurations create proj2
$ gcloud config configurations activate proj2
$ gcloud auth activate-service-account --key-file sa2.json

现在,您可以使用gcloud config configurations activate命令来设置您想要使用的配置,或者设置CLOUDSDK_ACTIVE_CONFIG_NAME环境变量来指定您想要在哪个配置下运行命令。即bq ls使用sa1.json信用运行:

$ CLOUDSDK_ACTIVE_CONFIG_NAME=proj1 bq ls

对于sa2.json信用:

$ CLOUDSDK_ACTIVE_CONFIG_NAME=proj2 bq ls
于 2016-01-21T17:12:26.230 回答