如何让gcloud auth activate-service-account保持不变

use*_*284 12 google-bigquery gcloud

我正在使用bq命令行工具从Bigquery表中进行查询.当我登录并开箱即运行查询过程时,有没有办法让服务帐户身份验证保持不变?

我做的步骤:

  1. 我登录了linux框
  2. 运行以下命令验证服务帐户:

    gcloud auth activate-service-account --key-file /somekeyFile.p12 someServiceAccount.gserviceaccount.com 
    
    Run Code Online (Sandbox Code Playgroud)
  3. 从bigquery表查询,这很好用:

    bq --project_id=formal-cascade-571 query "select * from dw_test.clokTest"
    
    Run Code Online (Sandbox Code Playgroud)

但后来我从框中退出,然后重新登录.当我再次查询Bigquery表时:

bq --project_id=formal-cascade-571 query "select * from dw_test.clokTest"
Run Code Online (Sandbox Code Playgroud)

它给了我错误:

您当前的有效帐户[someServiceAccount.gserviceaccount.com]没有任何有效凭据.

即使我传入私钥文件:

bq --service_account=someServiceAccount.gserviceaccount.com --service_account_credential_file=~/clok_cred.txt --service_account_private_key_file=/somekeyFile.p12 --project_id=formal-cascade-571 query "select * from dw_test.clokTest"
Run Code Online (Sandbox Code Playgroud)

它给出了同样的错误:

您当前的有效帐户[someServiceAccount.gserviceaccount.com]没有任何有效凭据.

因此,每次我需要通过以下方式重新验证我的服务帐户:

gcloud auth activate-service-account
Run Code Online (Sandbox Code Playgroud)

有没有办法让经过身份验证的服务帐户凭据保持不变?

谢谢您的帮助.

Jor*_*ani 12

我问过GCloud开发者,他们提到了一个已知的错误,除非CLOUDSDK_PYTHON_SITEPACKAGES设置了环境变量,否则服务帐户不会出现.

希望很快就会修复,但与此同时,当您再次登录时,可以尝试运行

export CLOUDSDK_PYTHON_SITEPACKAGES=1
Run Code Online (Sandbox Code Playgroud)

并看看它是否有效?

你可以跑

gcloud auth list
Run Code Online (Sandbox Code Playgroud)

查看哪些帐户有凭据; 它应该列出您的服务帐户.