Déployez et gérez un lac de données sans serveur sur le AWS cloud en utilisant l'infrastructure sous forme de code - Recommandations AWS

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.

Déployez et gérez un lac de données sans serveur sur le AWS cloud en utilisant l'infrastructure sous forme de code

Créé par Kirankumar Chandrashekar () et Abdel Jaidi () AWS AWS

Environnement : Production

Technologies : DataLakes ; Analytique ; Sans serveur ; DevOps

Charge de travail : toutes les autres charges de travail

AWSservices : Amazon S3 ; Amazon ; AWS Glue SQS AWS CloudFormation ; Amazon ; AWS Lambda CloudWatch ; AWS Step Functions ; Amazon DynamoDB

Récapitulatif

Ce modèle décrit comment utiliser l'informatique sans serveur et l'infrastructure en tant que code (IaC) pour implémenter et administrer un lac de données sur le cloud Amazon Web Services (AWS). Ce modèle est basé sur l'atelier Serverless Data Lake Framework (SDLF) développé parAWS.

SDLFest un ensemble de ressources réutilisables qui accélèrent la diffusion des lacs de données d'entreprise sur le AWS cloud et contribuent à accélérer le déploiement en production. Il est utilisé pour implémenter la structure de base d'un lac de données en suivant les meilleures pratiques.

SDLFmet en œuvre un processus d'intégration/déploiement continu (CI/CD) tout au long du déploiement du code et de l'infrastructure en utilisant AWS des services tels que AWS CodePipeline AWS CodeBuild, et. AWS CodeCommit

Ce modèle utilise plusieurs services AWS sans serveur pour simplifier la gestion des lacs de données. Il s'agit notamment d'Amazon Simple Storage Service (Amazon S3) et Amazon DynamoDB pour le stockage, de AWS Lambda et AWS Glue pour l'informatique, et d'Amazon Events, Amazon Simple Queue Service SQS ( CloudWatch Amazon) et Step Functions pour l'orchestration. AWS

AWS CloudFormation et les services de AWS code agissent comme la couche IaC pour fournir des déploiements rapides et reproductibles avec des opérations et une administration faciles.

Conditions préalables et limitations

Prérequis

Architecture

Le schéma d'architecture illustre un processus piloté par les événements avec les étapes suivantes. 

Implémentation et administration d'un lac de données sur le AWS cloud.
  1. Une fois qu'un fichier est ajouté au compartiment S3 de données brutes, une notification d'événement Amazon S3 est placée dans une SQS file d'attente. Chaque notification est envoyée sous forme de JSON fichier contenant des métadonnées telles que le nom du compartiment S3, la clé de l'objet ou l'horodatage.

  2. Cette notification est consommée par une fonction Lambda qui achemine l'événement vers le processus d'extraction, de transformation et de chargement (ETL) approprié en fonction des métadonnées. La fonction Lambda peut également utiliser des configurations contextuelles stockées dans une table Amazon DynamoDB. Cette étape permet le découplage et la mise à l'échelle vers plusieurs applications du lac de données.

  3. L'événement est acheminé vers la première fonction Lambda ETL du processus, qui transforme et déplace les données de la zone de données brutes vers la zone intermédiaire du lac de données. La première étape consiste à mettre à jour le catalogue complet. Il s'agit d'une table DynamoDB qui contient toutes les métadonnées de fichier du lac de données. Chaque ligne de ce tableau contient des métadonnées opérationnelles relatives à un seul objet stocké dans Amazon S3. Un appel synchrone est effectué vers une fonction Lambda qui effectue une légère transformation, opération peu coûteuse en termes de calcul (telle que la conversion d'un fichier d'un format à un autre), sur l'objet S3. Comme un nouvel objet a été ajouté au compartiment S3 intermédiaire, le catalogue complet est mis à jour et un message est envoyé à la SQS file d'attente en attente de la phase suivante duETL.

  4. Une règle CloudWatch Events déclenche une fonction Lambda toutes les 5 minutes. Cette fonction vérifie si des messages ont été remis à la SQS file d'attente depuis la ETL phase précédente. Si un message a été délivré, la fonction Lambda lance la deuxième fonction à partir de AWSStep Functions dans le ETL processus.

  5. Une transformation lourde est ensuite appliquée à un lot de fichiers. Cette transformation lourde est une opération coûteuse en termes de calcul, telle qu'un appel synchrone vers une tâche AWS Glue, une AWS tâche Fargate, une étape Amazon ou un bloc-notes Amazon. EMR SageMaker Les métadonnées des tables sont extraites des fichiers de sortie à l'aide d'un robot AWS Glue, qui met à jour le catalogue AWS Glue. Les métadonnées des fichiers sont également ajoutées à la table complète du catalogue dans DynamoDB. Enfin, une étape de qualité des données utilisant Deequ est également exécutée.

Pile technologique

  • CloudWatch Événements Amazon

  • AWS CloudFormation

  • AWS CodePipeline

  • AWS CodeBuild

  • AWS CodeCommit

  • Amazon DynamoDB

  • Glue AWS

  • AWSLambda

  • Amazon S3

  • Amazon SQS

  • AWS Step Functions

Outils

  • Amazon CloudWatch Events — CloudWatch Events fournit un flux en temps quasi réel d'événements système décrivant les modifications apportées aux AWS ressources.

  • AWS CloudFormation— CloudFormation permet de créer et de fournir des déploiements AWS d'infrastructure de manière prévisible et répétée.

  • AWS CodeBuild— CodeBuild est un service de compilation entièrement géré qui compile votre code source, exécute des tests unitaires et produit des artefacts prêts à être déployés.

  • AWS CodeCommit— CodeCommit est un service de contrôle de version hébergé par AWS lequel vous pouvez utiliser pour stocker et gérer des actifs privés (tels que le code source et les fichiers binaires).

  • AWS CodePipeline— CodePipeline est un service de livraison continue que vous pouvez utiliser pour modéliser, visualiser et automatiser les étapes nécessaires à la publication continue des modifications apportées à vos logiciels.

  • Amazon DynamoDB — DynamoDB est un service sans base de données entièrement SQL géré qui fournit des performances rapides et prévisibles ainsi qu'une évolutivité. 

  • AWSGlue — AWS Glue est un ETL service entièrement géré qui facilite la préparation et le chargement des données à des fins d'analyse.

  • AWSLambda — Lambda prend en charge l'exécution de code sans provisionner ni gérer de serveurs. Lambda exécute le code uniquement lorsque cela est nécessaire et se met à l'échelle automatiquement, qu'il s'agisse de quelques requêtes par jour ou de milliers de requêtes par seconde. 

  • Amazon S3 — Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets hautement évolutif. Amazon S3 peut être utilisé pour un large éventail de solutions de stockage, notamment les sites Web, les applications mobiles, les sauvegardes et les lacs de données.

  • AWSStep Functions - AWS Step Functions est un orchestrateur de fonctions sans serveur qui permet de séquencer facilement des fonctions AWS Lambda et de multiples AWS services dans des applications critiques pour l'entreprise.

  • Amazon SQS — Amazon Simple Queue Service (AmazonSQS) est un service de mise en file d'attente de messages entièrement géré qui vous aide à découpler et à dimensionner les microservices, les systèmes distribués et les applications sans serveur.

  • Deequ — Deequ est un outil qui vous aide à calculer les mesures de qualité des données pour de grands ensembles de données, à définir et à vérifier les contraintes de qualité des données et à rester informé des changements dans la distribution des données.

Référentiel de code

Le code source et les ressources correspondantes SDLF sont disponibles dans le GitHub référentiel AWS Labs.

Épopées

TâcheDescriptionCompétences requises

Configurez le pipeline CI/CD pour gérer l'IaC pour le lac de données.

Connectez-vous à la console AWS de gestion et suivez les étapes décrites dans la section Configuration initiale de l'SDLFatelier. Cela crée les ressources CI/CD initiales, telles que les CodeCommit référentiels, les CodeBuild environnements et les CodePipeline pipelines qui fournissent et gèrent l'IaC pour le lac de données.

DevOps ingénieur
TâcheDescriptionCompétences requises

Clonez le CodeCommit dépôt sur votre machine locale.

Suivez les étapes décrites dans la section Déploiement des fondations de l'SDLFatelier. Cela vous permet de cloner le dépôt Git qui héberge IaC dans votre environnement local. 

Pour plus d'informations, consultez la section Connexion aux CodeCommit référentiels dans la CodeCommit documentation.

DevOps ingénieur

Modifiez les CloudFormation modèles.

Utilisez votre poste de travail local et un éditeur de code pour modifier les CloudFormation modèles en fonction de vos cas d'utilisation ou de vos besoins. Commettez-les dans le dépôt Git cloné localement. 

Pour plus d'informations, consultez la section Utilisation des AWS CloudFormation modèles dans la AWS CloudFormation documentation.

DevOps ingénieur

Transférez les modifications au CodeCommit référentiel.

Votre code d'infrastructure est désormais sous contrôle de version et les modifications apportées à votre base de code sont suivies. Lorsque vous apportez une modification au CodeCommit référentiel, celle-ci est CodePipeline automatiquement appliquée à votre infrastructure et transmise à CodeBuild. 

Important : Si vous utilisez les commandes AWS SAM CLI in CodeBuild, exécutez les sam deploy commandes sam package and. Si vous utilisez AWSCLI, exécutez les aws cloudformation deploy commandes aws cloudformation package et.

DevOps ingénieur

Ressources connexes

Configurer le pipeline CI/CD pour approvisionner l'iAc

Contrôle de version de l'iAc

Autres ressources