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.

Python

Debes especificar lo siguiente en tu Dockerfile: FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE, FLEX_TEMPLATE_PYTHON_PY_FILE, FLEX_TEMPLATE_PYTHON_PY_OPTIONS y FLEX_TEMPLATE_PYTHON_SETUP_FILE.

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"

Cambia la imagen base

Puedes usar una imagen base que proporciona Google para empaquetar los contenedores mediante Docker. Elige el nombre de la versión más reciente de la referencia sobre Imágenes base de plantillas flexibles. No selecciones latest.

Especifica la imagen base en el siguiente formato:

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

Reemplaza lo siguiente:

Usar contenedores personalizados

También puedes compilar tu propio contenedor personalizado para empaquetar una plantilla flexible. Elige el nombre de la versión más reciente de la referencia de imágenes del lanzador de plantillas flexibles y copia los objetos binarios del lanzador en los contenedores personalizados. Los objetos binarios se compilan para sistemas operativos Debian GNU/Linux. No selecciones latest.

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.

FROM gcr.io/dataflow-templates-base/IMAGE_NAME:VERSION_NAME 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"]

Reemplaza lo siguiente:

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.