GCP Impersonation功能运行BQ命令不生效报错问题咨询
报错根因
低于380.0.0版本的bq组件不支持直接读取gcloud全局配置的auth/impersonate_service_account参数,因此会触发模拟功能不可用的报错。
可用解决方法
- 方法1:直接在bq命令中显式传递模拟服务账号参数,无需提前设置gcloud全局配置
调整后命令如下:
注意:服务账号需要填写完整的邮箱格式,不能仅填写前缀bq query --use_legacy_sql=false \ --impersonate_service_account=sa-account@你的项目ID.iam.gserviceaccount.com \ "SELECT * from prj-name.dataset-name.table-name ORDER BY Version" - 方法2:升级gcloud及所有关联组件到最新版本
先执行升级命令:
升级完成后再执行你原来的命令即可正常生效。gcloud components update - 方法3:先获取模拟服务账号的临时凭证再执行操作
命令序列如下:# 生成目标服务账号的临时访问凭证并登录 gcloud auth print-access-token --impersonate-service-account=sa-account@你的项目ID.iam.gserviceaccount.com | gcloud auth login --cred-file - # 执行bq查询操作 bq query --use_legacy_sql=false "SELECT * from prj-name.dataset-name.table-name ORDER BY Version" # 操作完成后取消模拟配置,切回原有账号 gcloud config unset auth/impersonate_service_account
前置权限校验
执行操作前需要确认你当前使用的主账号,已经拥有目标服务账号的roles/iam.serviceAccountTokenCreator权限,否则调整后仍会触发权限不足报错。
内容的提问来源于stack exchange,提问作者sharad jain
相关产品推荐
相关产品推荐

