【问题标题】:Access denied when copying BigQuery tables between GCP projects在 GCP 项目之间复制 BigQuery 表时访问被拒绝
【发布时间】:2022-07-22 06:33:06
【问题描述】:

我在欧洲西部 2 有项目 P1、P2。在这两个项目中,我在同一位置 europe-west2 具有相同的数据集/表结构。 在 P1 中,我创建了一个服务帐户并将相同的服务帐户 (SA) 添加到 P2,如下所示: https://gtseres.medium.com/using-service-accounts-across-projects-in-gcp-cf9473fef8f0

在这两个项目中,SA 都有 BigQuery Admin 角色。

我想将表从 P1 复制到 P2。我愿意

bq --project_id P1 --service_account_credential_file <path to SA json> cp P1:dataset.table P2:dataset.table

脚本似乎找到了表格并询问

cp: 替换 P2:dataset.table? (是/否)

确认后,cp说:

cp 操作中的 BigQuery 错误:访问被拒绝:项目 P1:用户执行 在项目 P1 中没有 bigquery.jobs.create 权限。

如果我尝试向另一个方向复制,那么我会得到:

cp 操作中的 BigQuery 错误:访问被拒绝:权限 bigquery.tables.get 在表上被拒绝 P1:dataset.sessions(或者它可能不存在)。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    此问题可能与权限有关。您需要这些权限:

    在源数据集上:

    • bigquery.tables.get
    • bigquery.tables.getData

    在目标数据集上:

    • bigquery.tables.create.

    运行复制作业的权限:

    • bigquery.jobs.create IAM 权限。

    • bigquery.datasets.create 权限

    此外,您需要这些 IAM 角色,其中包括运行复制作业所需的权限:

    • roles/bigquery.user
    • roles/bigquery.jobUser
    • 角色/bigquery.admin

    您可以使用此命令复制表格:

    bq --location=location cp \
    -a -f -n \
    project_id:dataset.source_table \
    project_id:dataset.destination_table
    

    你可以阅读这个documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      相关资源
      最近更新 更多