Configura plantillas flexibles

En esta página, se proporciona información sobre los permisos de entorno de Dockerfile obligatorias y los parámetros de canalización compatibles con las plantillas flexibles de Dataflow.

Para configurar una plantilla flexible muestra, consulta el instructivo de plantilla flexible.

Información sobre los permisos de plantillas flexibles

Cuando trabajas con plantillas flexibles, hay tres conjuntos de permisos que debes tener en cuenta:

  • Permisos para crear recursos
  • Permisos para compilar una plantilla flexible
  • Permisos para ejecutar una plantilla de Flex

Permisos para crear recursos

Para desarrollar y ejecutar una canalización de plantilla flexible, debes crear varios recursos (por ejemplo, un bucket de etapa de pruebas). Para tareas de creación de recursos únicas, puedes usar la función de propietario básica.

Permisos para compilar una plantilla flexible

Como desarrollador de una plantilla flexible, debes compilar la plantilla a fin de que esté disponible para los usuarios. La compilación implica subir una especificación de plantilla a un bucket de Cloud Storage y aprovisionar una imagen de Docker con el código y las dependencias necesarias para ejecutar la canalización. Para compilar una plantilla flexible, necesitas acceso de lectura y escritura a Cloud Storage y a Container Registry. Puedes otorgar estos permisos si asignas la siguiente función:

  • Administrador de almacenamiento (roles/storage.admin)

Permisos para ejecutar una plantilla de Flex

Cuando ejecutas una plantilla flexible, Dataflow crea un trabajo por ti. Para crear el trabajo, la cuenta de servicio de Dataflow necesita el siguiente permiso:

  • dataflow.serviceAgent

Cuando usas Dataflow por primera vez, el servicio te asigna esta función, por lo que no se requiere ninguna acción para otorgar el permiso anterior.

De forma predeterminada, la cuenta de servicio de Compute Engine se usa para las VM de iniciador y de trabajador. La cuenta de servicio necesita las siguientes funciones y capacidades:

  • Administrador de objetos de almacenamiento (roles/storage.objectAdmin)
  • Visualizador (roles/viewer)
  • Trabajador de Dataflow (roles/dataflow.worker)
  • Acceso de lectura y escritura al bucket de etapa de pruebas
  • Acceso de lectura a la imagen de la plantilla flexible

Para otorgar acceso de lectura y escritura al bucket de etapa de pruebas, puedes usar la función Administrador de objetos de almacenamiento (roles/storage.objectAdmin). Si deseas obtener más información, consulta Funciones de IAM para Cloud Storage.

Para otorgar acceso de lectura a la imagen de la plantilla flexible, puedes usar la función Visualizador de objetos de almacenamiento (roles/storage.objectViewer). Para obtener más información, consulta Configurar el control de acceso.

Configura variables de entorno de Dockerfile obligatorias

Si deseas crear tu propio archivo de Docker para un trabajo de plantilla flexible, debes especificar las siguientes variables de entorno:

Java

Debes especificar FLEX_TEMPLATE_JAVA_MAIN_CLASS y FLEX_TEMPLATE_JAVA_CLASSPATH en tu Dockerfile.

ENV Descripción Obligatorio
FLEX_TEMPLATE_JAVA_MAIN_CLASS Especifica qué clase de Java se ejecuta para iniciar la plantilla flexible.
FLEX_TEMPLATE_JAVA_CLASSPATH Especifica la ubicación de los archivos de clase.
FLEX_TEMPLATE_JAVA_OPTIONS Especifica las opciones de Java que se pasarán cuando se inicie la plantilla flexible. NO

Python

Debes especificar FLEX_TEMPLATE_PYTHON_PY_FILE en tu Dockerfile. También puedes configurar lo siguiente en tu Dockerfile: FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE, FLEX_TEMPLATE_PYTHON_PY_OPTIONS, FLEX_TEMPLATE_PYTHON_SETUP_FILE y FLEX_TEMPLATE_PYTHON_EXTRA_PACKAGES.

Por ejemplo, configuramos las siguientes variables de entorno del instructivo de transmisión en plantillas flexibles de Python:

ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="${WORKDIR}/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/streaming_beam.py"
ENV Descripción Obligatorio
FLEX_TEMPLATE_PYTHON_PY_FILE Especifica qué archivo de Python se debe ejecutar para iniciar la plantilla flexible.
FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE Especifica el archivo de requisitos para instalar las dependencias del lanzamiento. Si especificas FLEX_PLAN_PYTHON_INSTALL_FILE, no configures esta variable. NO
FLEX_TEMPLATE_PYTHON_SETUP_FILE Especifica el archivo de configuración para instalar las dependencias del lanzamiento. Para obtener información sobre el uso de los archivos de configuración, lee Varias dependencias de archivos. NO
FLEX_TEMPLATE_PYTHON_EXTRA_PACKAGES

Especifica los paquetes que no están disponibles de forma pública. Para obtener información sobre cómo usar paquetes adicionales, consulta Dependencias locales o no PyPI.

NO
FLEX_TEMPLATE_PYTHON_PY_OPTIONS Especifica las opciones de Python que se pasarán mientras se inicia la plantilla flexible. NO

Elige la imagen base

Puedes usar una imagen base que proporciona Google para empaquetar las imágenes de contenedor de tu plantilla mediante Docker. Elige la etiqueta más reciente de las Imágenes base de las plantillas flexibles. Se recomienda usar una etiqueta de imagen específica en lugar de latest.

Especifica la imagen base en el siguiente formato:

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

Reemplaza lo siguiente:

Usa imágenes de contenedor personalizadas

Si tu canalización usa una imagen de contenedor personalizada, te recomendamos que la uses como imagen base para la imagen de Docker de tu plantilla flexible. Para ello, copia el objeto binario del selector de la plantilla flexible de la imagen del selector de plantillas que proporciona Google en la imagen personalizada. Un ejemplo Dockerfile:

FROM gcr.io/dataflow-templates-base/IMAGE_NAME:TAG as template_launcher
FROM USER_CUSTOM_IMAGE

COPY --from=template_launcher /opt/google/dataflow/python_template_launcher /opt/google/dataflow/python_template_launcher

ARG WORKDIR=/dataflow/template
RUN mkdir -p ${WORKDIR}
WORKDIR ${WORKDIR}

COPY streaming_beam.py .

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

ENTRYPOINT ["/opt/google/dataflow/python_template_launcher"]

Crea un Dockerfile nuevo, especifica la imagen de lanzador de la plantilla flexible como superior y agrega cualquier personalización. Si deseas obtener más información sobre cómo escribir Dockerfiles, consulta Prácticas recomendadas para escribir Dockerfiles. Para obtener más información, consulta nuestra guía sobre cómo usar contenedores personalizados.

Reemplaza lo siguiente:

  • IMAGE_NAME: Una imagen de lanzador que proporciona Google Los objetos binarios se compilan para sistemas operativos Debian GNU/Linux.
  • TAG: Es un nombre de versión para la imagen del lanzador, que se encuentra en la referencia de imágenes del lanzador de plantillas flexibles Evita usar latest y fija una etiqueta de versión específica para mejorar la estabilidad y la solución de problemas.
  • USER_CUSTOM_IMAGE: Tu imagen de contenedor personalizado

Especifica opciones de canalización

Para obtener más información sobre las opciones de canalización compatibles con las plantillas flexibles, consulta Opciones de canalización.

También puedes usar cualquier opción de canalización de Apache Beam de forma indirecta. Si usas un archivo metadata.json para el trabajo de plantilla flexible, incluye estas opciones de canalización en el archivo. Este archivo de metadatos debe seguir el formato de TemplateMetadata. Para ver un ejemplo de un archivo metadata.json, consulta la muestra de plantilla flexible de transmisión de SQL.

De lo contrario, cuando inicies el trabajo de la plantilla flexible, pasa estas opciones de canalización mediante el campo de parámetros.

API

Incluye opciones de canalización mediante el campo parameters.

gcloud

Incluye opciones de canalización mediante la marca parameters.

Cuando pasas parámetros de tipo List o Map, es posible que sea necesario definir los parámetros en un archivo YAML y usar el flags-file. Para ver un ejemplo de este enfoque, consulta el paso “Crea un archivo con parámetros…” de esta solución.

¿Qué sigue?

  • Para obtener más información sobre las plantillas clásicas y flexibles y sus casos de uso, consulta Plantillas de Dataflow.
  • Para obtener información sobre la solución de problemas de las plantillas flexibles, consulta Guía de errores comunes.
  • Explora arquitecturas de referencia, diagramas, instructivos y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.