Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Orchestrez un pipeline ETL avec validation, transformation et partitionnement à l'aide de AWS Step Functions
Sandip Gangapadhyay, Amazon Web Services
Récapitulatif
Ce modèle décrit comment créer un pipeline d'extraction, de transformation et de chargement (ETL) sans serveur pour valider, transformer, compresser et partitionner un ensemble de données CSV volumineux afin d'optimiser les performances et les coûts. Le pipeline est orchestré par AWS Step Functions et inclut des fonctionnalités de gestion des erreurs, de réessai automatique et de notification aux utilisateurs.
Lorsqu'un fichier CSV est chargé dans un dossier source du bucket Amazon Simple Storage Service (Amazon S3), le pipeline ETL commence à s'exécuter. Le pipeline valide le contenu et le schéma du fichier CSV source, transforme le fichier CSV au format Apache Parquet compressé, partitionne le jeu de données par année, mois et jour, et le stocke dans un dossier distinct pour que les outils d'analyse puissent le traiter.
Le code qui automatise ce modèle est disponible sur GitHub, dans le pipeline ETL avec AWS Step Functions
Conditions préalables et limitations
Prérequis
Un actif Compte AWS.
AWS Command Line Interface (AWS CLI) installé et configuré avec votre Compte AWS, afin que vous puissiez créer des AWS ressources en déployant une AWS CloudFormation pile. Nous vous recommandons d'utiliser AWS CLI la version 2. Pour obtenir des instructions, consultez la section Installation ou mise à jour vers la dernière version AWS CLI de la AWS CLI documentation. Pour les instructions de configuration, consultez la section Paramètres des fichiers de configuration et d'identification dans la AWS CLI documentation.
Un compartiment Amazon S3.
Un jeu de données CSV avec le schéma correct. (Le référentiel de code
inclus dans ce modèle fournit un exemple de fichier CSV contenant le schéma et le type de données appropriés que vous pouvez utiliser.) Un navigateur Web qui prend en charge le AWS Management Console. (Consultez la liste des navigateurs pris en charge
.) AWS Glue accès à la console.
AWS Step Functions accès à la console.
Limites
En AWS Step Functions, la limite maximale de conservation des journaux d'historique est de 90 jours. Pour plus d'informations, consultez la section Quotas de service Step Functions dans la AWS Step Functions documentation.
Versions du produit
Python 3.13 pour AWS Lambda
AWS Glue version 4.0
Architecture

Le flux de travail illustré dans le diagramme comprend les étapes de haut niveau suivantes :
L'utilisateur télécharge un fichier CSV dans le dossier source d'Amazon S3.
Un événement de notification Amazon S3 lance une AWS Lambda fonction qui démarre la machine à AWS Step Functions états.
La fonction Lambda valide le schéma et le type de données du fichier CSV brut.
En fonction des résultats de validation :
Si la validation du fichier source aboutit, le fichier est transféré dans le dossier de stage pour un traitement ultérieur.
Si la validation échoue, le fichier est transféré dans le dossier des erreurs et une notification d'erreur est envoyée via Amazon Simple Notification Service (Amazon SNS).
Un AWS Glue robot d'exploration crée le schéma du fichier brut à partir du dossier stage dans Amazon S3.
Une AWS Glue tâche transforme, compresse et partitionne le fichier brut au format Parquet.
La AWS Glue tâche déplace également le fichier vers le dossier de transformation d'Amazon S3.
Le AWS Glue robot crée le schéma à partir du fichier transformé. Le schéma obtenu peut être utilisé par n'importe quelle tâche d'analyse. Vous pouvez également utiliser Amazon Athena pour exécuter des requêtes ad hoc.
Si le pipeline se termine sans erreur, le fichier de schéma est déplacé vers le dossier d'archive. En cas d'erreur, le fichier est plutôt déplacé vers le dossier des erreurs.
Amazon SNS envoie une notification indiquant le succès ou l'échec en fonction de l'état d'achèvement du pipeline.
Toutes les AWS ressources utilisées dans ce modèle sont sans serveur. Il n'y a aucun serveur à gérer.
Outils
Services AWS
AWS Glue
— AWS Glue est un service ETL entièrement géré qui permet aux clients de préparer et de charger facilement leurs données à des fins d'analyse. AWS Step Functions
— AWS Step Functions est un service d'orchestration sans serveur qui vous permet de combiner des AWS Lambda fonctions et d'autres fonctions Services AWS pour créer des applications critiques pour l'entreprise. La console AWS Step Functions graphique vous permet de voir le flux de travail de votre application comme une série d'étapes pilotées par des événements. Amazon S3
— Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets qui offre une évolutivité, une disponibilité des données, une sécurité et des performances de pointe. Amazon SNS —
Amazon Simple Notification Service (Amazon SNS) est un service de messagerie hautement disponible, durable, sécurisé et entièrement pub/sub géré qui vous permet de dissocier les microservices, les systèmes distribués et les applications sans serveur. AWS Lambda
— AWS Lambda est un service de calcul qui vous permet d'exécuter du code sans provisionner ni gérer de serveurs. AWS Lambda exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de quelques requêtes par jour à des milliers par seconde.
Code
Le code de ce modèle est disponible sur GitHub, dans le pipeline ETL avec AWS Step Functions
template.yml
— AWS CloudFormation modèle pour créer le pipeline ETL avec AWS Step Functions.parameter.json
— Contient tous les paramètres et leurs valeurs. Vous mettez à jour ce fichier pour modifier les valeurs des paramètres, comme décrit dans la section Epics.myLayer/python
dossier — Contient les packages Python nécessaires pour créer la AWS Lambda couche requise pour ce projet.lambda
dossier — Contient les fonctions Lambda suivantes :move_file.py
— Déplace le jeu de données source vers le dossier d'archive, de transformation ou d'erreur.check_crawler.py
— Vérifie l'état du AWS Glue robot d'exploration autant de fois que configuré par la variable d'RETRYLIMIT
environnement avant qu'il n'envoie un message d'échec.start_crawler.py
— Démarre le AWS Glue crawler.start_step_function.py
— Démarre AWS Step Functions.start_codebuild.py
— Démarre le AWS CodeBuild projet.validation.py
— Valide le jeu de données brut en entrée.s3object.py
— Crée la structure de répertoire requise dans le compartiment Amazon S3.notification.py
— Envoie des notifications de réussite ou d'erreur à la fin du pipeline.
Pour utiliser l'exemple de code, suivez les instructions de la section Epics.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Clonez le référentiel d'exemples de code. |
| Developer |
Mettez à jour les valeurs des paramètres. | Dans votre copie locale du référentiel, modifiez le
| Developer |
Téléchargez le code source dans le compartiment Amazon S3. | Avant de déployer le AWS CloudFormation modèle qui automatise le pipeline ETL, vous devez empaqueter les fichiers source du modèle et les charger dans un compartiment Amazon S3. Pour ce faire, exécutez la AWS CLI commande suivante avec votre profil préconfiguré :
où :
| Developer |
Tâche | Description | Compétences requises |
---|---|---|
Déployez le CloudFormation modèle. | Pour déployer le AWS CloudFormation modèle, exécutez la AWS CLI commande suivante :
où :
| Developer |
Vérifiez les progrès. | Sur la AWS CloudFormation console | Developer |
Notez le nom de la AWS Glue base de données. | L'onglet Sorties de la pile affiche le nom de la AWS Glue base de données. Le nom de la clé est | Developer |
Tâche | Description | Compétences requises |
---|---|---|
Démarrez le pipeline ETL. |
| Developer |
Vérifiez la présence du jeu de données partitionné. | Lorsque le pipeline ETL est terminé, vérifiez que l'ensemble de données partitionné est disponible dans le dossier de transformation Amazon S3 ( | Developer |
Vérifiez la base de AWS Glue données partitionnée. |
| Developer |
Exécutez des requêtes. | (Facultatif) Utilisez Amazon Athena pour exécuter des requêtes ad hoc sur la base de données partitionnée et transformée. Pour obtenir des instructions, consultez la section Exécuter des requêtes SQL dans Amazon Athena dans la AWS documentation. | analyste de base de données |
Résolution des problèmes
Problème | Solution |
---|---|
AWS Identity and Access Management Autorisations (IAM) pour le AWS Glue job et le crawler | Si vous personnalisez davantage la AWS Glue tâche ou le robot d'exploration, veillez à accorder les autorisations IAM appropriées dans le rôle IAM utilisé par la AWS Glue tâche, ou à fournir des autorisations de données à. AWS Lake Formation Pour plus d’informations, consultez la documentation AWS. |
Ressources connexes
Service AWS documentation
Informations supplémentaires
Le schéma suivant montre le AWS Step Functions flux de travail pour un pipeline ETL réussi, à partir du panneau AWS Step Functions Inspector.

Le schéma suivant montre le AWS Step Functions flux de travail d'un pipeline ETL qui échoue en raison d'une erreur de validation des entrées, à partir du panneau Step Functions Inspector.
