第 4 步:设置组件

本页介绍了部署 Cortex Framework 数据基础架构(Cortex Framework 的核心)的第四步。在此步骤中,您需要设置要部署的所需Google Cloud 服务。

在本部分中,您将在Google Cloud 项目中启用以下 Google Cloud 服务:

  • BigQuery 实例和数据集
  • Cloud Build API
  • Cloud Storage 存储分区
  • 服务账号(可选)
  • Cloud Resource Manager API
  • 工作流执行作业(仅在使用 Meridian 专用 Cortex Framework 时需要)
  • AI 平台(仅在使用适用于 Meridian 的 Cortex Framework 时需要)

使用 Cloud Shell 启用以下 Google Cloud 服务:

  1. 复制并粘贴以下命令:

    gcloud config set project SOURCE_PROJECT
    
    gcloud services enable bigquery.googleapis.com \
                          cloudbuild.googleapis.com \
                          composer.googleapis.com \
                          storage-component.googleapis.com \
                          cloudresourcemanager.googleapis.com \
                          dataflow.googleapis.com \
                          workflowexecutions.googleapis.com \
                          workflows.googleapis.com \
                          aiplatform.googleapis.com
    

    SOURCE_PROJECT 替换为您的来源项目 ID。

  2. 如果您收到成功消息,请确保 Google Cloud 服务已启用。

可选。您可以在Google Cloud 项目中启用以下 Google Cloud 服务:

  • Cloud Composer:通过有向无环图 (DAG) 实现变更数据捕获 (CDC) 处理、层次结构扁平化(仅限 SAP)和数据复制(仅限非 SAP)。如需设置实例,请参阅 Cloud Composer 文档
  • Looker,用于连接到报告模板。
  • BigQuery Sharing(以前称为 Analytics Hub)关联的数据集用于一些外部来源,例如 Weather DAG。对于高级场景,您可以选择使用任何其他可用来源来填充此结构。
  • Dataflow:适用于许多营销数据集(例如 Google Ads)的集成工具。
  • Dataplex:用于构建数据网格。如需了解详情,请参阅数据网格用户指南
  • 对于搭配 Meridian 的 Cortex Framework:
    • Colab Enterprise:在运行和执行期间运行 Colab Enterprise 笔记本,并有权访问以下内容:
    • Cloud Storage 中的记事本和配置文件。
    • 查询相关的 BigQuery 视图和表。
    • 将结果写回 Cloud Storage。
    • 工作流:运行工作流和 Cloud Build 以触发 Colab Enterprise 笔记本执行。

向执行用户授予权限

如需在触发 Cloud Build 的项目中执行部署,请向执行用户授予以下权限:

  • Service Usage Consumer
  • 适用于 Cloud Build 默认存储分区或日志存储分区的 Storage Object Viewer
  • 输出存储分区的对象写入器
  • Cloud Build Editor
  • Project Viewer 或 Storage Object Viewer

如需详细了解如何授予这些权限,请参阅以下文档:

配置 Cloud Build 账号

Cloud Build 使用服务账号代表您执行构建。按照以下步骤为 Cloud Build 服务账号授予部署 Cortex Framework 的权限。

如需向 Cloud Build 服务账号授予部署 Cortex Framework 的权限,请使用以下命令。

  1. 打开 Cloud Shell 并执行以下命令,找到默认的 Cloud Build 服务账号:

    gcloud builds get-default-service-account --project PROJECT_ID
    
  2. 收到格式为以下任一形式的响应:

    # Response one
    `serviceAccountEmail: projects/PROJECT_NUMBER/serviceAccounts/PROJECT_NUMBER-compute@developer.gserviceaccount.com`
    # Response two
    `serviceAccountEmail: projects/PROJECT_NUMBER/serviceAccounts/PROJECT_NUMBER@cloudbuild.gserviceaccount.com`
    

    其中 PROJECT_NUMBER 会替换为您的项目编号。之前的任一服务账号电子邮件地址都是您的默认 Cloud Build 服务账号。

  3. IAM 中查看 @developer.gserviceaccount.com 账号或 @cloudbuild.gserviceaccount.com 账号,找到此服务账号。

  4. 通过控制台或 Google Cloud CLI 向源代码项目(以及部署到单独目标的目标项目)中的 Cloud Build 服务账号授予以下权限:

    • Cloud Build 服务账号 (roles/cloudbuild.builds.builder)
    • Service Account User (roles/iam.serviceAccountUser)
    • BigQuery Data Editor (roles/bigquery.dataEditor)
    • BigQuery Job User (roles/bigquery.jobUser)
    • Colab Enterprise Admin (roles/aiplatform.colabEnterpriseAdmin - only needed with Cortex Framework for Meridian)
    • Storage Object User (roles/storage.objectUser - only needed with Cortex Framework for Meridian)
    • Workflows Editor (roles/workflows.editor - 仅适用于 Meridian 的 Cortex Framework)

    控制台

    1. 在 Google Cloud 控制台中,前往 IAM 页面。

      转到 IAM

    2. 选择您的源项目。

    3. 点击 授予访问权限

    4. 将上一步中的默认 Cloud Build 服务账号添加为新主账号。

    5. 选择角色下拉菜单中,搜索 Cloud Build 服务账号,然后点击 Cloud Build 服务账号

    6. 重复上一步骤,添加其余角色:

      • Service Account User
      • BigQuery Data Editor
      • BigQuery Job User
      • Colab Enterprise 管理员
      • Storage Object User
      • Workflows Editor
    7. 点击保存

    8. 验证服务账号及对应的角色是否在 IAM 页面中列出。您已成功授予 IAM 角色。

    gcloud

    使用以下命令向 Cloud Build 服务账号授予角色:

    gcloud projects add-iam-policy-binding SOURCE_PROJECT \
        --member="serviceAccount:CLOUD_BUILD_SA" \
        --role="roles/cloudbuild.builds.builder"
    gcloud projects add-iam-policy-binding SOURCE_PROJECT \
        --member="serviceAccount:CLOUD_BUILD_SA" \
        --role="roles/iam.serviceAccountUser"
    gcloud projects add-iam-policy-binding SOURCE_PROJECT \
        --member="serviceAccount:CLOUD_BUILD_SA" \
        --role="roles/bigquery.dataEditor"
    gcloud projects add-iam-policy-binding SOURCE_PROJECT \
        --member="serviceAccount:CLOUD_BUILD_SA" \
        --role="roles/bigquery.jobUser"
    gcloud projects add-iam-policy-binding SOURCE_PROJECT \
        --member="serviceAccount:CLOUD_BUILD_SA" \
        --role="roles/aiplatform.colabEnterpriseAdmin"
    gcloud projects add-iam-policy-binding SOURCE_PROJECT \
        --member="serviceAccount:CLOUD_BUILD_SA" \
        --role="roles/storage.objectUser"
    gcloud projects add-iam-policy-binding SOURCE_PROJECT \
        --member="serviceAccount:CLOUD_BUILD_SA" \
        --role="roles/workflows.editor"
    

    替换以下内容:

    • SOURCE_PROJECT 替换为来源项目 ID。
    • CLOUD_BUILD_SA 与 Cloud Build 默认服务账号。

    如需了解详情,请参阅使用 IAM 页面向 Cloud Build 服务账号授予角色设置和管理存储分区的 IAM 政策

为 Meridian 版 Cortex 创建一个额外的服务账号

在部署 Cortex Framework 时,Meridian 需要单独的服务账号。如果您不是针对 Meridian 部署,则可以跳过此步骤。 以下各项都需要单独的服务账号:

  • 运行工作流和 Cloud Build 以触发 Colab Enterprise 笔记本执行。
  • 运行 Colab Enterprise 笔记本,并有权访问:
    • Cloud Storage 上的记事本和配置文件。
    • 查询相关的 BigQuery 视图和表。
    • 将结果写回 Cloud Storage。

使用以下命令为 Meridian 的 Cortex 创建服务账号:


 gcloud iam service-accounts create cortex-meridian-colab-runner --project= PROJECT_ID \
        --description="Cortex for Meridian Colab Runner Service Account" \
        --display-name="Cortex Meridian Runner"

替换以下内容:

  • PROJECT_ID 替换为部署 Cortex for Meridian 的项目 ID。
  • cortex-meridian-colab-runner:您可以选择使用其他服务账号 ID。请注意,cortex-meridian-colab-runner 是默认值,如果将其更改,可能需要调整其他命令。

专用 Cortex for Meridian 服务账号至少需要具备以下角色:

  • BigQuery Data Viewer (roles/bigquery.dataViewer)
  • BigQuery Job User (roles/bigquery.jobUser)
  • BigQuery Read Session User (roles/bigquery.readSessionUser)
  • Cloud Build Editor (roles/cloudbuild.builds.editor)
  • Colab Enterprise Admin (roles/aiplatform.colabEnterpriseAdmin)
  • Logs Writer (roles/logging.logWriter)
  • Notebook Runtime Admin (aiplatform.notebookRuntimeAdmin)
  • Storage Admin (roles/storage.admin)
  • Storage Object User (roles/storage.objectUser)
  • Vertex AI Colab Service Agent (roles/aiplatform.colabServiceAgent)

使用以下命令向专用于 Cortex for Meridian 的服务账号授予角色:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/bigquery.dataViewer'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/bigquery.jobUser'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/bigquery.readSessionUser'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/cloudbuild.builds.editor'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/aiplatform.colabEnterpriseAdmin'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/logging.logWriter'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/aiplatform.notebookRuntimeAdmin'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/storage.admin'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/storage.objectUser'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/aiplatform.colabServiceAgent'

替换以下内容:

  • PROJECT_ID 替换为部署 Cortex for Meridian 的项目 ID。
  • SERVICE_ACCOUNT_EMAIL 替换为您的 Cortex for Meridian 服务账号。

可选步骤

如需更好地自定义部署,请考虑按照以下可选步骤操作:

您需要存储分区来存储处理 DAG 脚本和部署期间生成的其他临时文件。部署后,需要手动将这些脚本移至 Cloud Composer 或 Apache Airflow 实例中。

您可以按照以下步骤通过 Google Cloud CLI 或 Google Cloud 控制台创建存储分区。

控制台

  1. 转到 Cloud Storage。

    Cloud Storage

  2. 在与 BigQuery 数据集位于同一区域的位置创建存储分区。

  3. 选择创建的存储分区。

  4. 前往 Permissions 标签页。

  5. 向执行 build 命令的用户 ID 或您创建的服务账号授予 Storage Object Creator 权限。如需了解详情,请参阅为存储分区设置新条件:控制台

gcloud

  1. 使用以下命令从 Cloud Shell 创建存储分区:

    gcloud storage buckets create gs://DAG_BUCKET_NAME -l REGION/MULTI_REGION
    

    替换以下内容:

    • DAG_BUCKET_NAME 替换为新存储分区的名称。
    • REGION/MULTI_REGION 与 BigQuery 数据集位于同一区域。
  2. 使用以下命令向服务账号分配 Storage Object Creator 权限:

    gsutil iam ch serviceAccount:CLOUD_BUILD_SA:roles/storage.objectCreator gs://DAG_BUCKET_NAME
    

    替换以下内容:

    • CLOUD_BUILD_SA 使用 Cloud Build 默认服务账号。
    • DAG_BUCKET_NAME 替换为新存储分区的名称。

为日志创建一个存储分区

您可以为 Cloud Build 进程创建一个特定存储分区来存储日志。如果您想将可能存储在日志中的数据限制在特定区域,这项功能非常有用。您可以使用 Google Cloud CLI 或 Google Cloud 控制台为日志创建存储分区。

控制台

如需为日志创建特定存储分区,请按以下步骤操作:

  1. 转到 Cloud Storage。

    Cloud Storage

  2. 在部署将要运行的区域中创建一个存储分区。

  3. 选择创建的存储分区。

  4. 前往 Permissions 标签页。

  5. 向执行 build 命令的用户 ID 或您创建的服务账号授予 Storage Object Admin 权限。如需了解详情,请参阅为存储分区设置新条件:控制台

gcloud

如需为日志创建特定存储分区,请使用以下命令。

  1. 使用以下命令从 Cloud Shell 创建存储分区:

    gcloud storage buckets create gs://LOGS_BUCKET_NAME -l REGION/MULTI_REGION
    

    替换以下内容:

    • REGION/MULTI_REGION 并选择所需的区域以创建存储分区。
    • LOGS_BUCKET_NAME 替换为新存储分区的名称。
  2. 使用以下命令向服务账号分配 Storage Object Admin 权限:

    gsutil iam ch serviceAccount:CLOUD_BUILD_SA:roles/storage.objectAdmin gs://LOGS_BUCKET_NAME
    

    替换以下内容:

    • CLOUD_BUILD_SA 使用 Cloud Build 默认服务账号。
    • LOGS_BUCKET_NAME 替换为新存储分区的名称。

后续步骤

完成此步骤后,请继续执行以下部署步骤:

  1. 建立工作负载
  2. 克隆代码库
  3. 确定集成机制
  4. 设置组件(此页面)。
  5. 配置部署
  6. 执行部署