配置 Flex 模板

本页面介绍 Dataflow Flex 模板的权限、所需的 Dockerfile 环境变量和支持的流水线选项。

如要配置示例 Flex 模板,请参阅 Flex 模板教程

了解 Flex 模板权限

使用 Flex 模板时,需要注意以下三组权限:

  • 创建资源的权限
  • 构建 Flex 模板的权限
  • 运行 Flex 模板的权限

创建资源的权限

要开发和运行 Flex 模板流水线,您需要创建各种资源(例如暂存存储分区)。对于一次性资源创建任务,您可以使用基本 Owner 角色。

构建 Flex 模板的权限

作为 Flex 模板的开发者,您需要构建模板,以将其提供给用户。构建涉及将模板规范上传到 Cloud Storage 存储分区,以及使用运行流水线所需的代码和依赖项预配 Docker 映像。要构建 Flex 模板,您需要 Cloud Storage 的读写权限,以及 Container Registry 的读写权限。您可以通过分配以下角色来授予这些权限:

  • Storage Admin (roles/storage.admin)

运行 Flex 模板的权限

当您运行 Flex 模板时,Dataflow 会为您创建一个作业。要创建作业,Dataflow 服务帐号需要以下权限:

  • dataflow.serviceAgent

首次使用 Dataflow 时,服务会为您分配此角色,因此您无需采取任何操作来授予上述权限。

默认情况下,Compute Engine 服务帐号用于启动器虚拟机和工作器虚拟机。该服务帐号需要以下角色和权限:

  • Storage Object Admin (roles/storage.objectAdmin)
  • Viewer (roles/viewer)
  • Dataflow Worker (roles/dataflow.worker)
  • 暂存存储分区的读写权限
  • Flex 模板映像的读取权限

如需授予暂存存储分区的读写权限,您可以使用 Storage Object Admin (roles/storage.objectAdmin) 角色。如需了解详情,请参阅 Cloud Storage 的 IAM 角色

如需授予 Flex 模板映像的读取权限,您可以使用 Storage Object Viewer (roles/storage.objectViewer) 角色。如需了解详情,请参阅配置访问权限控制

设置所需的 Dockerfile 环境变量

如果要为 Flex 模板作业创建自己的 Docker 文件,您必须指定以下环境变量:

Java

您必须在 Dockerfile 中指定 FLEX_TEMPLATE_JAVA_MAIN_CLASSFLEX_TEMPLATE_JAVA_CLASSPATH

Python

您必须在 Dockerfile 中指定以下内容:FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILEFLEX_TEMPLATE_PYTHON_PY_FILEFLEX_TEMPLATE_PYTHON_PY_OPTIONSFLEX_TEMPLATE_PYTHON_SETUP_FILE

例如,我们在 Streaming in Python Flex 模板教程中设置了以下环境变量:

ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="${WORKDIR}/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/streaming_beam.py"

更改基础映像

您必须使用 Google 提供的基础映像来使用 Docker 打包容器。从 Flex 模板基础映像参考中选择最新版本名称。请勿选择 latest

请按以下格式指定基础映像:

gcr.io/dataflow-templates-base/IMAGE_NAME:VERSION_NAME

替换以下内容:

指定流水线选项

如需了解 Flex 模板直接支持的流水线选项,请参阅流水线选项

您还可以间接使用任何 Apache Beam 流水线选项。如果您为 Flex 模板作业使用 metadata.json 文件,请在该文件中添加以下流水线选项。此元数据文件必须遵循 TemplateMetadata 中的格式。如需查看 metadata.json 文件的示例,请参阅流式 SQL Flex 模板示例

否则,在启动 Flex 模板作业时,请使用参数字段传递这些流水线选项。

API

使用 parameters 字段添加流水线选项。

gcloud

使用 parameters 标志添加流水线选项。

传递 ListMap 类型的参数时,可能需要在 YAML 文件中定义参数并使用 flags-file。如需查看此方法的示例,请参阅此解决方案中的“创建包含参数的文件”步骤

后续步骤

  • 如需详细了解经典和 Flex 模板及其用例场景,请参阅 Dataflow 模板
  • 如需了解 Flex 模板问题排查,请参阅常见错误指南
  • 探索有关 Google Cloud 的参考架构、图表、教程和最佳做法。查看我们的云架构中心