启用 BigQuery Data Transfer Service

要使用 BigQuery Data Transfer Service,您必须以项目所有者身份完成以下步骤:

  • 创建项目并启用 BigQuery API。
  • 启用 BigQuery Data Transfer Service。

如需详细了解 Identity and Access Management (IAM) 角色,请参阅 IAM 文档中的了解角色

创建项目并启用 BigQuery API

在使用 BigQuery Data Transfer Service 之前,您必须先创建项目,而且大多数情况下,您还需要为该项目启用结算功能。您可以在 BigQuery Data Transfer Service 中使用现有项目,也可以新建一个项目。使用现有项目时,您可能还需要启用 BigQuery API。

要创建项目并启用 BigQuery API,请按如下所述操作:

  1. 在 Google Cloud Console 中,转到项目选择器页面。

    转到“项目选择器”

  2. 选择或创建 Google Cloud 项目。

  3. 在项目中为所有转移作业启用结算功能。对于免费转移作业,我们向您收取 $0。

    您只需为每个项目启用一次结算功能,即使要从多个来源转移数据也是如此。在转移数据后,也必须启用结算功能才能在 BigQuery 中查询数据。

    了解如何确认您的项目已启用结算功能

  4. 新项目会自动启用 BigQuery。要在现有项目中启用 BigQuery,请启用 BigQuery API。

    启用 BigQuery API

启用 BigQuery Data Transfer Service

您必须先启用 BigQuery Data Transfer Service,然后才能创建转移作业。要启用 BigQuery Data Transfer Service,您必须对项目拥有 Owner 角色。

要启用 BigQuery Data Transfer Service,请按如下所述操作:

  1. 在 API 库中打开 BigQuery Data Transfer API 页面。

  2. 从下拉菜单中选择相应的项目。

  3. 点击“启用”按钮。

    启用 Data Transfer API

服务代理

BigQuery Data Transfer Service 使用 Google 管理的服务账号(称为服务代理)来访问和管理资源。这包括但不限于以下资源:

  • 检索在授权数据转移时使用的服务账号的访问令牌。
  • 将通知发布到提供的 Pub/Sub 主题(如果已启用)。
  • 启动 BigQuery 作业。

在启用 BigQuery Data Transfer Service 后,首次使用 API 时,系统会自动为您创建服务代理。创建服务代理后,Google 会自动授予预定义的服务代理角色

跨项目服务账号授权

如果您使用服务账号授权数据转移,而不是使用启用了 BigQuery Data Transfer Service 的项目中的服务账号,则必须使用以下 Google Cloud CLI 命令向服务代理授予 roles/iam.serviceAccountTokenCreator 角色:

gcloud iam service-accounts add-iam-policy-binding service_account \
--member serviceAccount:service-project_number@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com \
--role roles/iam.serviceAccountTokenCreator

其中:

  • service_account 是用于授权数据转移的跨项目服务账号。
  • project_number 是启用了 BigQuery Data Transfer Service 的项目的编号。

如需详细了解跨项目资源配置,请参阅 Identity and Access Management 服务账号模拟文档中的为其他项目中的资源进行配置

手动创建服务代理

如果您希望在与 API 交互之前触发服务代理创建(例如,您需要向服务代理授予额外的角色),则可以使用以下任一方法:

当您手动触发服务代理创建时,Google 不会自动授予预定义的服务代理角色。必须使用以下 Google Cloud CLI 命令手动授予服务代理预定义角色:

gcloud projects add-iam-policy-binding project_number \
--member serviceAccount:service-project_number@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com \
--role roles/bigquerydatatransfer.serviceAgent

其中:

  • project_number 是启用了 BigQuery Data Transfer Service 的项目的编号。

授予 bigquery.admin 权限

我们建议向创建 BigQuery Data Transfer Service 转移作业的用户授予 bigquery.admin 预定义 IAM 角色。bigquery.admin 角色可提供执行最常见任务所需的 IAM 权限。bigquery.admin 角色可提供以下 BigQuery Data Transfer Service 权限:

  • BigQuery Data Transfer Service 权限:
    • bigquery.transfers.update
    • bigquery.transfers.get
  • BigQuery 权限:
    • bigquery.datasets.get
    • bigquery.datasets.update
    • bigquery.jobs.create

在某些情况下,所需的权限可能因不同数据源而异。如需了解特定 IAM 信息,请参阅每个数据源转移作业指南中的“所需权限”部分。例如,请参阅 Amazon S3 转移作业权限Cloud Storage 转移作业权限

如需授予 bigquery.admin 角色,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中打开 IAM 网页。

    打开 IAM 页面

  2. 点击选择项目

  3. 选择项目并点击打开

  4. 点击添加向项目添加新成员,然后为这些成员设置相应的权限。

  5. 添加成员对话框中,执行以下操作:

    • 成员部分中,输入用户或群组的电子邮件地址。
    • 选择角色下拉列表中,依次点击 BigQuery > BigQuery 管理员
    • 点击添加

      授予管理员

gcloud

您可以使用 Google Cloud CLI 向用户或群组授予 bigquery.admin 角色。

要将单个绑定添加到项目的 IAM 政策,请输入以下命令。如需添加用户,请按照如下格式提供 --member 标志:user:user@example.com。如需添加群组,请按照如下格式提供 --member 标志:group:group@example.com

gcloud projects add-iam-policy-binding project_id \
--member principal:address \
--role roles/bigquery.admin

其中:

  • project_id 是您的项目 ID。
  • principalgroupuser
  • address 是用户或群组的电子邮件地址。

例如:

gcloud projects add-iam-policy-binding myproject \
--member group:group@example.com \
--role roles/bigquery.admin

该命令会输出更新后的政策:

    bindings:
    - members:
      - group:group@example.com
        role: roles/bigquery.admin
    

如需详细了解 BigQuery 中的 IAM 角色,请参阅预定义的角色和权限

后续步骤

启用 BigQuery Data Transfer Service 后,为您的数据源创建转移作业。