我正在使用云工作流程编排来查询 Bigquery 表,该表作为外部表连接到 Google Drive 上的 Google Sheet。
因此云工作流使用服务帐户
<SA_ID>@<ProjectName>.iam.gserviceaccount.com
来查询所述bigquery表。我已提供对 Google 表格中 SA 的编辑访问权限,以及对 Bigquery 中 SA 的管理员访问权限。 虽然工作流程正在使用本机 bigquery 表,但在查询连接到 google 工作表的表时,我收到以下错误 Access Denied: BigQuery BigQuery: Permission denied while getting Drive credentials.
服务帐户不应该访问谷歌表格吗?
将其发布为社区 wiki,以便其他人可以从中受益。
与这个问题非常相似,但目前你无法实现这一点。与 Google 云端硬盘的连接不受外部连接管理,因此没有专用的服务帐户来实现连接。 查询使用 NodeJS 连接到 Google Sheets 的 GCP BigQuery 表时权限被拒绝
您可以在此链接中提交功能请求。
注意:产品团队将调查并检查这是否是有效的功能请求。不过,没有预计到达时间。创建功能请求后,您还可以在同一链接上跟踪请求的更新。
为 Google 云端硬盘添加连接器范围“https://www.googleapis.com/auth/drive”
main:
steps:
- init:
assign:
- result: {}
- runQuery:
call: googleapis.bigquery.v2.jobs.query
args:
projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
body:
useLegacySql: false
useQueryCache: false
timeoutMs: 30000
query: ${
"<<SELECT FROM GOOGLE SHEET EXTERNAL TABLE>>"
}
connector_params:
scopes:
- 'https://www.googleapis.com/auth/bigquery'
- 'https://www.googleapis.com/auth/drive'
result: queryResult
- returnResults:
return: ${result}