Configurer des modèles Flex

Cette page fournit des informations sur les autorisations, les variables d'environnement Dockerfile requises et sur les options de pipeline compatibles avec les modèles Flex Dataflow.

Pour configurer un exemple de modèle Flex, consultez le tutoriel sur l'utilisation des modèles Flex.

Comprendre les autorisations des modèles Flex

Lorsque vous travaillez avec des modèles Flex, vous devez connaître les trois ensembles d'autorisations suivants :

  • Autorisations de créer des ressources
  • Autorisations de créer un modèle Flex
  • Autorisations d'exécuter un modèle Flex

Autorisations de créer des ressources

Pour développer et exécuter un pipeline de modèle Flex, vous devez créer diverses ressources (par exemple, un bucket de préproduction). Pour les tâches de création de ressources ponctuelles, vous pouvez utiliser le rôle de propriétaire de base.

Autorisations de créer un modèle Flex

En tant que développeur d'un modèle Flex, vous devez le créer pour le mettre à la disposition des utilisateurs. La création implique d'importer une spécification de modèle dans un bucket Cloud Storage et de provisionner une image Docker avec le code et les dépendances nécessaires à l'exécution du pipeline. Pour créer un modèle Flex, vous devez disposer d'un accès en lecture et en écriture à Cloud Storage et à Container Registry. Vous pouvez accorder ces autorisations en attribuant les rôles suivants :

  • Administrateur de l'espace de stockage (roles/storage.admin)
  • Éditeur Cloud Build (roles/cloudbuild.builds.editor)

Remarque : Vous pouvez également utiliser Artifact Registry pour stocker vos images. Pour en savoir plus sur les autorisations Artifact Registry, consultez la section Configurer le contrôle des accès.

Autorisations d'exécuter un modèle Flex

Lorsque vous exécutez un modèle Flex, Dataflow crée une tâche pour vous. Pour créer la tâche, le compte de service Dataflow doit disposer des autorisations suivantes :

  • dataflow.serviceAgent

Lorsque vous utilisez Dataflow pour la première fois, le service attribue ce rôle à votre place. Aucune action n'est donc requise pour accorder l'autorisation ci-dessus.

Par défaut, le compte de service Compute Engine est utilisé pour les VM de lanceur d'applications et les VM de nœud de calcul. Le compte de service requiert les rôles et fonctionnalités suivants :

  • Administrateur des objets de l'espace de stockage (roles/storage.objectAdmin)
  • Lecteur (roles/viewer)
  • Nœud de calcul Dataflow (roles/dataflow.worker)
  • Accès en lecture et en écriture au bucket de préproduction
  • Accès en lecture à l'image du modèle Flex

Pour accorder un accès en lecture et en écriture au bucket de préproduction, vous pouvez utiliser le rôle d'Administrateur des objets de l'espace de stockage (roles/storage.objectAdmin). Pour en savoir plus, consultez la page Rôles IAM pour Cloud Storage.

Pour accorder un accès en lecture à l'image du modèle Flex, vous pouvez utiliser le rôle Lecteur des objets de l'espace de stockage (roles/storage.objectViewer). Pour en savoir plus, consultez la section Configurer le contrôle des accès.

Définir les variables d'environnement requises dans le fichier Dockerfile

Si vous souhaitez créer votre propre fichier Docker pour une tâche de modèle Flex, vous devez spécifier les variables d'environnement suivantes :

Java

Vous devez spécifier FLEX_TEMPLATE_JAVA_MAIN_CLASS et FLEX_TEMPLATE_JAVA_CLASSPATH dans le fichier Dockerfile.

ENV Description Requis
FLEX_TEMPLATE_JAVA_MAIN_CLASS Spécifie la classe Java à exécuter afin de lancer le modèle Flex. OUI
FLEX_TEMPLATE_JAVA_CLASSPATH Spécifie l'emplacement des fichiers de classe. OUI
FLEX_TEMPLATE_JAVA_OPTIONS Spécifie les options Java à transmettre lors du lancement du modèle Flex. NON

Python

Vous devez spécifier FLEX_TEMPLATE_PYTHON_PY_FILE dans le fichier Dockerfile. Vous pouvez également définir les éléments suivants dans votre fichier Dockerfile : FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE, FLEX_TEMPLATE_PYTHON_PY_OPTIONS, FLEX_TEMPLATE_PYTHON_SETUP_FILE et FLEX_TEMPLATE_PYTHON_EXTRA_PACKAGES.

Par exemple, nous avons défini les variables d'environnement suivantes dans le tutoriel sur la diffusion dans les modèles Flex en langage Python :

ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="${WORKDIR}/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/streaming_beam.py"
ENV Description Requis
FLEX_TEMPLATE_PYTHON_PY_FILE Spécifie le fichier Python à exécuter pour lancer le modèle Flex. OUI
FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE Spécifie le fichier d'exigences utilisé pour installer les dépendances pour le lancement. Si vous spécifiez FLEX_TEMPLATE_PYTHON_SETUP_FILE, ne définissez pas cette variable. NON
FLEX_TEMPLATE_PYTHON_SETUP_FILE Spécifie le fichier de configuration permettant d'installer les dépendances pour le lancement. Pour plus d'informations sur l'utilisation des fichiers de configuration, consultez la section Dépendances de plusieurs fichiers. NON
FLEX_TEMPLATE_PYTHON_EXTRA_PACKAGES

Spécifie les packages qui ne sont pas disponibles publiquement. Pour plus d'informations sur l'utilisation de packages supplémentaires, consultez la section Dépendances locales ou non PyPI.

NON
FLEX_TEMPLATE_PYTHON_PY_OPTIONS Spécifie les options Python à transmettre lors du lancement du modèle Flex. NON

Choisir l'image de base

Vous pouvez utiliser une image de base fournie par Google pour empaqueter vos images de conteneurs de modèles à l'aide de Docker. Choisissez le tag le plus récent parmi les images de base des modèles Flex. Il est recommandé d'utiliser un tag d'image spécifique au lieu de latest.

Spécifiez l'image de base au format suivant :

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

Remplacez l'élément suivant :

Utiliser des images de conteneurs personnalisées

Si votre pipeline utilise une image de conteneur personnalisée, nous vous recommandons d'utiliser l'image personnalisée comme image de base pour votre image Docker de modèle Flex. Pour ce faire, copiez le fichier binaire du lanceur de modèles Flex présent sur l'image de lanceur de modèles fournie par Google sur votre image personnalisée. Exemple de 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"]

Créez un fichier Dockerfile en spécifiant l'image du lanceur de modèles Flex comme parent, puis ajoutez les personnalisations souhaitées. Pour en savoir plus sur l'écriture de fichiers Dockerfile, consultez la section Bonnes pratiques pour l'écriture de fichiers Dockerfile. Pour en savoir plus, consultez notre guide sur l'utilisation des conteneurs personnalisés.

Remplacez l'élément suivant :

  • IMAGE_NAME : image de lanceur fournie par Google. Les binaires sont conçus pour les systèmes d'exploitation Debian GNU/Linux.
  • TAG : nom de version de l'image de lanceur, disponible dans la documentation de référence sur les images du lanceur de modèles Flex. Évitez d'utiliser latest et épinglez à un tag de version spécifique pour améliorer la stabilité et simplifier le dépannage.
  • USER_CUSTOM_IMAGE : votre image de conteneur personnalisé.

Spécifier les options de pipeline

Pour en savoir plus sur les options de pipeline directement compatibles avec les modèles Flex, consultez la page Options de pipeline.

Vous pouvez également utiliser indirectement toutes les options de pipeline Apache Beam. Si vous utilisez un fichier metadata.json pour votre tâche de modèle Flex, incluez ces options de pipeline dans le fichier. Ce fichier de métadonnées doit respecter le format spécifié dans TemplateMetadata. Pour obtenir un exemple de fichier metadata.json, consultez l'exemple de modèle Flex de traitement par flux SQL.

Sinon, lorsque vous lancez la tâche du modèle Flex, transmettez ces options de pipeline à l'aide du champ de paramètres.

API

Incluez des options de pipeline à l'aide du champ parameters.

gcloud

Incluez les options de pipeline à l'aide de l'option parameters.

Lors de la transmission de paramètres de type List ou Map, il peut être nécessaire de définir des paramètres dans un fichier YAML et d'utiliser l'option flags-file. Pour voir un exemple de cette approche, consultez l'étape "Créez un fichier en incluant les paramètres..." dans cette solution.

Comprendre les emplacements de préproduction et temporaires

Le SDK Cloud fournit les options --staging-location et --temp-location lorsque vous exécutez un modèle Flex. De même, l'API REST Dataflow fournit des champs stagingLocation et tempLocation pour FlexTemplateRuntimeEnvironment.

Pour les modèles Flex, l'emplacement de préproduction est l'URL Cloud Storage dans laquelle les fichiers sont écrits lors de l'étape de préproduction du lancement d'un modèle. Dataflow lit ces fichiers intermédiaires pour créer le graphique de modèle. L'emplacement temporaire est l'URL de Cloud Storage dans laquelle les fichiers temporaires sont écrits lors de l'étape d'exécution.

Étape suivante

  • Pour en savoir plus sur les modèles classiques et Flex, et leurs cas d'utilisation, consultez la page Modèles Dataflow.
  • Pour en savoir plus sur la résolution des problèmes liés aux modèles Flex, consultez la section Conseils sur les erreurs fréquentes.
  • Explorez des architectures de référence, des schémas, des tutoriels et des bonnes pratiques concernant Google Cloud. Consultez notre Centre d'architecture cloud.