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 le rôle suivant :

  • Administrateur de l'espace de stockage (roles/storage.admin)

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.

Python

Vous devez spécifier les éléments suivants dans votre fichier Dockerfile : FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE, FLEX_TEMPLATE_PYTHON_PY_FILE, FLEX_TEMPLATE_PYTHON_PY_OPTIONS et FLEX_TEMPLATE_PYTHON_SETUP_FILE.

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"

Modifier l'image de base

Vous pouvez utiliser une image de base fournie par Google pour empaqueter vos conteneurs à l'aide de Docker. Choisissez le nom de la version la plus récente dans la documentation de référence sur les images de base des modèles Flex. Ne sélectionnez pas latest.

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

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

Remplacez l'élément suivant :

Utiliser des conteneurs personnalisés

Vous pouvez également créer votre propre conteneur personnalisé pour empaqueter un modèle Flex. Choisissez le nom de la version la plus récente dans la documentation de référence sur les images du lanceur de modèles Flex et copiez les binaires du lanceur dans vos conteneurs personnalisés. Les binaires sont conçus pour les systèmes d'exploitation Debian GNU/Linux. Ne sélectionnez pas latest.

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.

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"]

Remplacez l'élément suivant :

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.

Étapes suivantes

  • 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.