第 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 服务:
复制并粘贴以下命令:
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。如果您收到成功消息,请确保 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 的权限,请使用以下命令。
打开 Cloud Shell 并执行以下命令,找到默认的 Cloud Build 服务账号:
gcloud builds get-default-service-account --project PROJECT_ID
收到格式为以下任一形式的响应:
# 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 服务账号。在 IAM 中查看
@developer.gserviceaccount.com
账号或@cloudbuild.gserviceaccount.com
账号,找到此服务账号。通过控制台或 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)
控制台
在 Google Cloud 控制台中,前往 IAM 页面。
选择您的源项目。
点击
授予访问权限。将上一步中的默认 Cloud Build 服务账号添加为新主账号。
在选择角色下拉菜单中,搜索 Cloud Build 服务账号,然后点击 Cloud Build 服务账号。
重复上一步骤,添加其余角色:
- Service Account User,
- BigQuery Data Editor
- BigQuery Job User
- Colab Enterprise 管理员
- Storage Object User
- Workflows Editor
点击保存。
验证服务账号及对应的角色是否在 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 政策。
- Cloud Build 服务账号 (
为 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 相关的文件
您需要存储分区来存储处理 DAG 脚本和部署期间生成的其他临时文件。部署后,需要手动将这些脚本移至 Cloud Composer 或 Apache Airflow 实例中。
您可以按照以下步骤通过 Google Cloud CLI 或 Google Cloud 控制台创建存储分区。
控制台
转到 Cloud Storage。
在与 BigQuery 数据集位于同一区域的位置创建存储分区。
选择创建的存储分区。
前往
Permissions
标签页。向执行 build 命令的用户 ID 或您创建的服务账号授予
Storage Object Creator
权限。如需了解详情,请参阅为存储分区设置新条件:控制台。
gcloud
使用以下命令从 Cloud Shell 创建存储分区:
gcloud storage buckets create gs://DAG_BUCKET_NAME -l REGION/MULTI_REGION
替换以下内容:
- 将
DAG_BUCKET_NAME
替换为新存储分区的名称。 REGION/MULTI_REGION
与 BigQuery 数据集位于同一区域。
- 将
使用以下命令向服务账号分配
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 控制台为日志创建存储分区。
控制台
如需为日志创建特定存储分区,请按以下步骤操作:
转到 Cloud Storage。
在部署将要运行的区域中创建一个存储分区。
选择创建的存储分区。
前往
Permissions
标签页。向执行 build 命令的用户 ID 或您创建的服务账号授予
Storage Object Admin
权限。如需了解详情,请参阅为存储分区设置新条件:控制台。
gcloud
如需为日志创建特定存储分区,请使用以下命令。
使用以下命令从 Cloud Shell 创建存储分区:
gcloud storage buckets create gs://LOGS_BUCKET_NAME -l REGION/MULTI_REGION
替换以下内容:
REGION/MULTI_REGION
并选择所需的区域以创建存储分区。- 将
LOGS_BUCKET_NAME
替换为新存储分区的名称。
使用以下命令向服务账号分配
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
替换为新存储分区的名称。
后续步骤
完成此步骤后,请继续执行以下部署步骤: