Bereitstellen und verwalten Sie einen serverlosen Data Lake in der AWS Cloud, indem Sie Infrastruktur als Code verwenden - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bereitstellen und verwalten Sie einen serverlosen Data Lake in der AWS Cloud, indem Sie Infrastruktur als Code verwenden

Erstellt von Kirankumar Chandrashekar () und Abdel Jaidi () AWS AWS

Umwelt: Produktion

Technologien: Analytik; Serverlos; DevOps

Arbeitslast: Alle anderen Workloads

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

Übersicht

Hinweis: AWS CodeCommit ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS CodeCommit können den Service weiterhin wie gewohnt nutzen. Weitere Informationen

Dieses Muster beschreibt, wie Serverless Computing und Infrastructure as Code (IaC) verwendet werden, um einen Data Lake in der Amazon Web Services (AWS) Cloud zu implementieren und zu verwalten. Dieses Muster basiert auf dem Workshop Serverless Data Lake Framework (SDLF), der von entwickelt wurde. AWS

SDLFist eine Sammlung wiederverwendbarer Ressourcen, die die Bereitstellung von Data Lakes für Unternehmen in der AWS Cloud beschleunigen und zu einer schnelleren Bereitstellung in der Produktion beitragen. Es wird verwendet, um die grundlegende Struktur eines Data Lakes unter Befolgung von Best Practices zu implementieren.

SDLFimplementiert einen CI/CD-Prozess (Continuous Integration/Continuous Deployment) während der gesamten Code- und Infrastrukturbereitstellung mithilfe von AWS Diensten wie AWS CodePipeline, AWS CodeBuild und. AWS CodeCommit

Dieses Muster verwendet mehrere AWS serverlose Dienste, um das Data Lake-Management zu vereinfachen. Dazu gehören Amazon Simple Storage Service (Amazon S3) und Amazon DynamoDB für die Speicherung, AWS Lambda und AWS Glue für die Datenverarbeitung sowie Amazon CloudWatch Events, Amazon Simple Queue Service (AmazonSQS) und AWS Step Functions für die Orchestrierung.

AWS CloudFormation und AWS Code-Services fungieren als IaC-Ebene und sorgen für reproduzierbare und schnelle Bereitstellungen mit einfachem Betrieb und einfacher Verwaltung.

Voraussetzungen und Einschränkungen

Voraussetzungen

Architektur

Das Architekturdiagramm veranschaulicht einen ereignisgesteuerten Prozess mit den folgenden Schritten. 

Implementierung und Verwaltung eines Data Lakes in der Cloud. AWS
  1. Nachdem eine Datei zum Rohdaten-S3-Bucket hinzugefügt wurde, wird eine Amazon S3 S3-Ereignisbenachrichtigung in eine SQS Warteschlange gestellt. Jede Benachrichtigung wird als JSON Datei übermittelt, die Metadaten wie den S3-Bucket-Namen, den Objektschlüssel oder den Zeitstempel enthält.

  2. Diese Benachrichtigung wird von einer Lambda-Funktion verarbeitet, die das Ereignis auf der Grundlage der Metadaten an den richtigen Extraktions-, Transformations- und Ladeprozess (ETL) weiterleitet. Die Lambda-Funktion kann auch kontextbezogene Konfigurationen verwenden, die in einer Amazon DynamoDB-Tabelle gespeichert sind. Dieser Schritt ermöglicht die Entkopplung und Skalierung auf mehrere Anwendungen im Data Lake.

  3. Das Ereignis wird an die erste Lambda-Funktion im ETL Prozess weitergeleitet, die Daten transformiert und aus dem Rohdatenbereich in den Staging-Bereich für den Data Lake verschiebt. Der erste Schritt besteht darin, den umfassenden Katalog zu aktualisieren. Dies ist eine DynamoDB-Tabelle, die alle Dateimetadaten des Data Lake enthält. Jede Zeile in dieser Tabelle enthält Betriebsmetadaten zu einem einzelnen Objekt, das in Amazon S3 gespeichert ist. Es wird synchron eine Lambda-Funktion aufgerufen, die eine leichte Transformation für das S3-Objekt durchführt. Dabei handelt es sich um einen rechenintensiven Vorgang (z. B. das Konvertieren einer Datei von einem Format in ein anderes). Da dem Staging-S3-Bucket ein neues Objekt hinzugefügt wurde, wird der umfassende Katalog aktualisiert und eine Nachricht an die SQS Warteschlange gesendet, in der auf die nächste Phase im gewartet wird. ETL

  4. Eine CloudWatch Ereignisregel löst alle 5 Minuten eine Lambda-Funktion aus. Diese Funktion prüft, ob Nachrichten aus der vorherigen ETL Phase an die SQS Warteschlange zugestellt wurden. Wenn eine Nachricht zugestellt wurde, startet die Lambda-Funktion die zweite Funktion von AWSStep Functions im ETL Prozess.

  5. Anschließend wird eine umfangreiche Transformation auf einen Stapel von Dateien angewendet. Diese umfangreiche Transformation ist ein rechenintensiver Vorgang, z. B. ein synchroner Aufruf eines AWS Glue-Jobs, einer AWS Fargate-Aufgabe, eines EMR Amazon-Schritts oder eines Amazon-Notebooks. SageMaker Tabellenmetadaten werden mithilfe eines AWS Glue-Crawlers, der den Glue-Katalog aktualisiert, aus den AWS Ausgabedateien extrahiert. Dateimetadaten werden auch der umfassenden Katalogtabelle in DynamoDB hinzugefügt. Schließlich wird auch ein Datenqualitätsschritt ausgeführt, der Deequ nutzt.

Technologie-Stack

  • CloudWatch Amazon-Veranstaltungen

  • AWS CloudFormation

  • AWS CodePipeline

  • AWS CodeBuild

  • AWS CodeCommit

  • Amazon-DynamoDB

  • AWS Glue

  • AWSLambda

  • Amazon S3

  • Amazon SQS

  • AWS Step Functions

Tools

  • Amazon CloudWatch Events — CloudWatch Events bietet einen Stream von Systemereignissen, die Änderungen an AWS Ressourcen beschreiben, nahezu in Echtzeit.

  • AWS CloudFormation— CloudFormation hilft bei der vorhersehbaren und wiederholten Erstellung und Bereitstellung von AWS Infrastrukturbereitstellungen.

  • AWS CodeBuild— CodeBuild ist ein vollständig verwalteter Build-Service, der Ihren Quellcode kompiliert, Komponententests durchführt und Artefakte erzeugt, die sofort einsatzbereit sind.

  • AWS CodeCommit— CodeCommit ist ein VersionskontrolldienstAWS, der von bereitgestellt wird und mit dem Sie Ressourcen (wie Quellcode und Binärdateien) privat speichern und verwalten können.

  • AWS CodePipeline— CodePipeline ist ein Continuous Delivery Service, mit dem Sie die Schritte modellieren, visualisieren und automatisieren können, die für die kontinuierliche Veröffentlichung Ihrer Softwareänderungen erforderlich sind.

  • Amazon DynamoDB — DynamoDB ist ein vollständig verwalteter Service ohne SQL Datenbank, der schnelle und vorhersehbare Leistung mit Skalierbarkeit bietet. 

  • AWSGlue — AWS Glue ist ein vollständig verwalteter ETL Service, der das Aufbereiten und Laden von Daten für Analysen erleichtert.

  • AWSLambda — Lambda unterstützt die Ausführung von Code ohne Bereitstellung oder Verwaltung von Servern. Lambda führt Ihren Code nur bei Bedarf aus und skaliert automatisch – von einigen Anforderungen pro Tag bis zu Tausenden pro Sekunde. 

  • Amazon S3 — Amazon Simple Storage Service (Amazon S3) ist ein hoch skalierbarer Objektspeicherservice. Amazon S3 kann für eine Vielzahl von Speicherlösungen verwendet werden, darunter Websites, mobile Anwendungen, Backups und Data Lakes.

  • AWSStep Functions — AWS Step Functions ist ein serverloser Funktionsorchestrator, der es einfach macht, AWS Lambda-Funktionen und mehrere AWS Dienste in geschäftskritischen Anwendungen zu sequenzieren.

  • Amazon SQS — Amazon Simple Queue Service (AmazonSQS) ist ein vollständig verwalteter Message Queuing-Service, mit dem Sie Microservices, verteilte Systeme und serverlose Anwendungen entkoppeln und skalieren können.

  • Deequ — Deequ ist ein Tool, mit dem Sie Datenqualitätskennzahlen für große Datenmengen berechnen, Datenqualitätsbeschränkungen definieren und überprüfen und über Änderungen bei der Datenverteilung auf dem Laufenden bleiben können.

Code-Repository

Der Quellcode und die Ressourcen für SDLF sind im AWS GitHub Labs-Repository verfügbar.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Richten Sie die CI/CD-Pipeline ein, um IaC für den Data Lake zu verwalten.

Melden Sie sich bei der AWS Management Console an und folgen Sie den Schritten aus dem Abschnitt Ersteinrichtung des Workshops. SDLF Dadurch werden die ersten CI/CD-Ressourcen wie CodeCommit Repositorys, CodeBuild Umgebungen und CodePipeline Pipelines erstellt, die IaC für den Data Lake bereitstellen und verwalten.

DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das CodeCommit Repository auf Ihrem lokalen Computer.

Folgen Sie den Schritten aus dem SDLF Workshop-Abschnitt Deployment the Foundations. Auf diese Weise können Sie das Git-Repository, das IaC hostet, in Ihre lokale Umgebung klonen. 

Weitere Informationen finden Sie in der Dokumentation unter Verbindung zu CodeCommit Repositorys herstellen. CodeCommit

DevOps Ingenieur

Ändern Sie die CloudFormation Vorlagen.

Verwenden Sie Ihre lokale Workstation und einen Code-Editor, um die CloudFormation Vorlagen an Ihre Anwendungsfälle oder Anforderungen anzupassen. Übergeben Sie sie in das lokal geklonte Git-Repository. 

Weitere Informationen finden Sie in der AWS CloudFormation Dokumentation unter Arbeiten mit AWS CloudFormation Vorlagen.

DevOps Ingenieur

Übertragen Sie die Änderungen in das CodeCommit Repository.

Ihr Infrastrukturcode unterliegt jetzt der Versionskontrolle und Änderungen an Ihrer Codebasis werden nachverfolgt. Wenn Sie eine Änderung per Push in das CodeCommit Repository übertragen, CodePipeline wird sie automatisch auf Ihre Infrastruktur angewendet und an diese weitergeleitet CodeBuild. 

Wichtig: Wenn Sie die Befehle AWS SAM CLI in verwenden CodeBuild, führen Sie die sam deploy Befehle sam package und aus. Wenn Sie verwenden AWSCLI, führen Sie die aws cloudformation deploy Befehle aws cloudformation package und aus.

DevOps Ingenieur

Zugehörige Ressourcen

Richten Sie die CI/CD-Pipeline für die Bereitstellung von IaC ein

Versionskontrolle des IaC

Sonstige Ressourcen