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

时间:2014-07-31 18:35:30

标签: google-bigquery gcloud

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

我做的步骤:

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

    gcloud auth activate-service-account --key-file /somekeyFile.p12 someServiceAccount.gserviceaccount.com 
    
  3. 从bigquery表查询,这很好用:

    bq --project_id=formal-cascade-571 query "select * from dw_test.clokTest"
    
  4. 然后我从框中退出,然后重新登录。当我再次查询Bigquery表时:

    bq --project_id=formal-cascade-571 query "select * from dw_test.clokTest"
    

    它给了我错误:

      

    您当前的有效帐户[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"
    

    它给出了同样的错误:

      

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

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

    gcloud auth activate-service-account
    

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

    感谢您的帮助。

2 个答案:

答案 0 :(得分:11)

我问过GCloud开发人员他们提到了一个已知错误,除非设置了环境变量CLOUDSDK_PYTHON_SITEPACKAGES,否则服务帐户不会显示。

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

export CLOUDSDK_PYTHON_SITEPACKAGES=1

然后看它是否有效?

你可以运行

gcloud auth list

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

答案 1 :(得分:0)

我通过重新启动gcloud auth login来修复它。然后Google要求我打开一个触发CLOUDSDK授权的网页,我认为该授权与J. Tigani共享的解决方案有关。