我想通过命令进行 BQ 查询bq。
这是我的命令:
bq query --application_default_credential_file $GOOGLE_APPLICATION_CREDENTIALS
--nouse_legacy_sql 'SELECT * FROM `my_project.data.Document` limit 100'
Run Code Online (Sandbox Code Playgroud)
GOOGLE_APPLICATION_CREDENTIALS指向凭证文件。我可以使用此变量来启用gcloud命令来访问我的项目资源。
如果我直接在 bigquery 查询 UI 中运行查询,则查询运行正常。我以我自己的身份登录。
但是bq 因这个错误而失败Access Denied: Table my_project:data.Document: User does not have permission to query table
my_project:data.Document.
我已将这些角色授予了凭证文件中包含的 id(服务帐户):
我是否错过了任何角色/权限?
我想您可能知道bq执行程序的 授权标志已被弃用并且不再使用,因此标志--application_default_credential_file在您的初始命令中更像是多余的bq query。一般来说,bq授权参数有时会干扰gcloud凭证设置,从而导致不可预测的结果。根据官方指南,您应该遵循常规的 SDK 说明来执行授权设置:
bq 授权标志已弃用。要配置 bq 命令行工具的授权,请参阅授权 Cloud SDK 工具。
默认的 @appspot.gserviceaccount.comApp Engine服务帐户已授予原始 Editor角色,承认它可以访问所有资源,这里不需要额外roles/bigquery.dataViewer的权限。roles/bigquery.user
| 归档时间: |
|
| 查看次数: |
19671 次 |
| 最近记录: |