我正在使用bq命令行工具从Bigquery表中进行查询。当我登录并开箱即运行查询过程时,有没有办法让服务帐户身份验证持续存在?
我做的步骤:
运行以下身份验证服务帐户:
gcloud auth activate-service-account --key-file /somekeyFile.p12 someServiceAccount.gserviceaccount.com
从bigquery表查询,这很好用:
bq --project_id=formal-cascade-571 query "select * from dw_test.clokTest"
然后我从框中退出,然后重新登录。当我再次查询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
是否有办法让经过身份验证的服务帐户凭据保持不变?
感谢您的帮助。
答案 0 :(得分:11)
我问过GCloud开发人员他们提到了一个已知错误,除非设置了环境变量CLOUDSDK_PYTHON_SITEPACKAGES
,否则服务帐户不会显示。
希望很快就会修复,但与此同时,当您再次登录时,可以尝试运行
export CLOUDSDK_PYTHON_SITEPACKAGES=1
然后看它是否有效?
你可以运行
gcloud auth list
查看哪些帐户有凭据;它应该列出您的服务帐户。
答案 1 :(得分:0)
我通过重新启动gcloud auth login
来修复它。然后Google要求我打开一个触发CLOUDSDK授权的网页,我认为该授权与J. Tigani共享的解决方案有关。