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.
Orchestrieren Sie eine ETL-Pipeline mit Validierung, Transformation und Partitionierung mit AWS Step Functions
Sandip Gangapadhyay, Amazon Web Services
Übersicht
Dieses Muster beschreibt, wie Sie eine serverlose ETL-Pipeline (Extrahieren, Transformieren und Laden) erstellen, um einen großen CSV-Datensatz zur Leistungs- und Kostenoptimierung zu validieren, zu transformieren, zu komprimieren und zu partitionieren. Die Pipeline wird durch Funktionen zur Fehlerbehandlung, zur automatischen Wiederholung AWS Step Functions und zur Benutzerbenachrichtigung orchestriert und umfasst diese Funktionen.
Wenn eine CSV-Datei in einen Bucket-Quellordner von Amazon Simple Storage Service (Amazon S3) hochgeladen wird, beginnt die ETL-Pipeline zu laufen. Die Pipeline validiert den Inhalt und das Schema der CSV-Quelldatei, wandelt die CSV-Datei in ein komprimiertes Apache Parquet-Format um, partitioniert den Datensatz nach Jahr, Monat und Tag und speichert ihn in einem separaten Ordner, damit Analysetools ihn verarbeiten können.
Der Code, der dieses Muster automatisiert, ist in der GitHub ETL-Pipeline
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktiver AWS-Konto.
AWS Command Line Interface (AWS CLI) wurde mit Ihrem installiert und konfiguriert AWS-Konto, sodass Sie AWS Ressourcen erstellen können, indem Sie einen AWS CloudFormation Stack bereitstellen. Wir empfehlen die Verwendung AWS CLI von Version 2. Anweisungen finden Sie AWS CLI in der AWS CLI Dokumentation unter Installation oder Aktualisierung auf die neueste Version von. Anweisungen zur Konfiguration finden Sie in der AWS CLI Dokumentation unter Einstellungen für Konfiguration und Anmeldeinformationsdatei.
Ein Amazon-S3-Bucket
Ein CSV-Datensatz mit dem richtigen Schema. (Das in diesem Muster enthaltene Code-Repository
enthält eine CSV-Beispieldatei mit dem richtigen Schema und Datentyp, die Sie verwenden können.) Ein Webbrowser, der die unterstützt AWS Management Console. (Sehen Sie sich die Liste der unterstützten Browser
an.) AWS Glue Zugriff auf die Konsole.
AWS Step Functions Konsolenzugriff.
Einschränkungen
In liegt AWS Step Functions die Höchstgrenze für die Aufbewahrung von Verlaufsprotokollen bei 90 Tagen. Weitere Informationen finden Sie in der AWS Step Functions Dokumentation unter Step Functions Functions-Dienstkontingente.
Produktversionen
Python 3.13 für AWS Lambda
AWS Glue Version 4.0
Architektur

Der in der Abbildung dargestellte Arbeitsablauf besteht aus diesen grundlegenden Schritten:
Der Benutzer lädt eine CSV-Datei in den Quellordner in Amazon S3 hoch.
Ein Amazon S3 S3-Benachrichtigungsereignis löst eine AWS Lambda Funktion aus, die die AWS Step Functions Zustandsmaschine startet.
Die Lambda-Funktion validiert das Schema und den Datentyp der CSV-Rohdatei.
Abhängig von den Validierungsergebnissen:
Wenn die Überprüfung der Quelldatei erfolgreich ist, wird die Datei zur weiteren Verarbeitung in den Stage-Ordner verschoben.
Schlägt die Überprüfung fehl, wird die Datei in den Fehlerordner verschoben und eine Fehlerbenachrichtigung wird über Amazon Simple Notification Service (Amazon SNS) gesendet.
Ein AWS Glue Crawler erstellt das Schema der Rohdatei aus dem Stage-Ordner in Amazon S3.
Ein AWS Glue Job transformiert, komprimiert und partitioniert die Rohdatei in das Parquet-Format.
Der AWS Glue Job verschiebt die Datei auch in den Transformationsordner in Amazon S3.
Der AWS Glue Crawler erstellt das Schema aus der transformierten Datei. Das resultierende Schema kann von jedem Analysejob verwendet werden. Sie können Amazon Athena auch verwenden, um Ad-hoc-Abfragen auszuführen.
Wenn die Pipeline ohne Fehler abgeschlossen wird, wird die Schemadatei in den Archivordner verschoben. Wenn Fehler auftreten, wird die Datei stattdessen in den Fehlerordner verschoben.
Amazon SNS sendet eine Benachrichtigung, die auf Erfolg oder Misserfolg basierend auf dem Status der Pipeline-Fertigstellung hinweist.
Alle in diesem Muster verwendeten AWS Ressourcen sind serverlos. Es müssen keine Server verwaltet werden.
Tools
AWS-Services
AWS Glue
— AWS Glue ist ein vollständig verwalteter ETL-Service, der es Kunden leicht macht, ihre Daten für Analysen vorzubereiten und zu laden. AWS Step Functions
— AWS Step Functions ist ein serverloser Orchestrierungsservice, mit dem Sie AWS Lambda Funktionen und andere Funktionen kombinieren können, um geschäftskritische AWS-Services Anwendungen zu erstellen. Über die AWS Step Functions grafische Konsole sehen Sie den Arbeitsablauf Ihrer Anwendung als eine Reihe von ereignisgesteuerten Schritten. Amazon S3
— Amazon Simple Storage Service (Amazon S3) ist ein Objektspeicherservice, der branchenführende Skalierbarkeit, Datenverfügbarkeit, Sicherheit und Leistung bietet. Amazon SNS
— Amazon Simple Notification Service (Amazon SNS) ist ein hochverfügbarer, langlebiger, sicherer und vollständig verwalteter pub/sub Messaging-Service, mit dem Sie Microservices, verteilte Systeme und serverlose Anwendungen entkoppeln können. AWS Lambda
— AWS Lambda ist ein Rechenservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. AWS Lambda führt Ihren Code nur bei Bedarf aus und skaliert automatisch, von wenigen Anfragen pro Tag bis hin zu Tausenden pro Sekunde.
Code
Der Code für dieses Muster ist in der GitHub ETL-Pipeline mit AWS Step Functions
template.yml
— AWS CloudFormation Vorlage für die Erstellung der ETL-Pipeline mit AWS Step Functions.parameter.json
— Enthält alle Parameter und Parameterwerte. Sie aktualisieren diese Datei, um Parameterwerte zu ändern, wie im Abschnitt Epics beschrieben.myLayer/python
Ordner — Enthält Python-Pakete, die zum Erstellen der erforderlichen AWS Lambda Ebene für dieses Projekt benötigt werden.lambda
Ordner — Enthält die folgenden Lambda-Funktionen:move_file.py
— Verschiebt den Quelldatensatz in den Archiv-, Transformations- oder Fehlerordner.check_crawler.py
— Überprüft den Status des AWS Glue Crawlers so oft, wie von derRETRYLIMIT
Umgebungsvariablen konfiguriert, bevor eine Fehlermeldung gesendet wird.start_crawler.py
— Startet den AWS Glue Crawler.start_step_function.py
— Startet AWS Step Functions.start_codebuild.py
— Startet das AWS CodeBuild Projekt.validation.py
— Validiert den Eingabe-Rohdatensatz.s3object.py
— Erstellt die erforderliche Verzeichnisstruktur im Amazon S3 S3-Bucket.notification.py
— Sendet Erfolgs- oder Fehlerbenachrichtigungen am Ende der Pipeline.
Um den Beispielcode zu verwenden, folgen Sie den Anweisungen im Abschnitt Epics.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Klonen Sie das Beispielcode-Repository. |
| Developer |
Aktualisieren Sie die Parameterwerte. | Bearbeiten Sie in Ihrer lokalen Kopie des Repositorys die
| Developer |
Laden Sie den Quellcode in den Amazon S3 S3-Bucket hoch. | Bevor Sie die AWS CloudFormation Vorlage bereitstellen, die die ETL-Pipeline automatisiert, müssen Sie die Quelldateien für die Vorlage verpacken und in einen Amazon S3 S3-Bucket hochladen. Führen Sie dazu den folgenden AWS CLI Befehl mit Ihrem vorkonfigurierten Profil aus:
Wobei:
| Developer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Stellen Sie die CloudFormation Vorlage bereit. | Führen Sie den folgenden AWS CLI Befehl aus, um die AWS CloudFormation Vorlage bereitzustellen:
Wobei:
| Developer |
Überprüfe den Fortschritt. | Überprüfen Sie auf der AWS CloudFormation Konsole | Developer |
Notieren Sie sich den AWS Glue Datenbanknamen. | Auf der Registerkarte Ausgaben für den Stack wird der Name der AWS Glue Datenbank angezeigt. Der Schlüsselname ist | Developer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Starten Sie die ETL-Pipeline. |
| Developer |
Suchen Sie nach dem partitionierten Datensatz. | Wenn die ETL-Pipeline abgeschlossen ist, stellen Sie sicher, dass der partitionierte Datensatz im Amazon S3 S3-Transformationsordner (oder dem Ordnernamen | Developer |
Suchen Sie nach der partitionierten Datenbank AWS Glue . |
| Developer |
Führen Sie Abfragen aus. | (Optional) Verwenden Sie Amazon Athena, um Ad-hoc-Abfragen in der partitionierten und transformierten Datenbank auszuführen. Anweisungen finden Sie in der AWS Dokumentation unter Ausführen von SQL-Abfragen in Amazon Athena. | Datenbank-Analyst |
Fehlerbehebung
Problem | Lösung |
---|---|
AWS Identity and Access Management (IAM) -Berechtigungen für den AWS Glue Job und den Crawler | Wenn Sie den AWS Glue Job oder den Crawler weiter anpassen, stellen Sie sicher, dass Sie die entsprechenden IAM-Berechtigungen in der vom AWS Glue Job verwendeten IAM-Rolle gewähren oder Datenberechtigungen für erteilen. AWS Lake Formation Weitere Informationen finden Sie in der AWS -Dokumentation. |
Zugehörige Ressourcen
AWS-Service Dokumentation
Zusätzliche Informationen
Das folgende Diagramm zeigt den AWS Step Functions Arbeitsablauf für eine erfolgreiche ETL-Pipeline vom AWS Step Functions Inspektor-Panel aus.

Das folgende Diagramm zeigt den AWS Step Functions Arbeitsablauf für eine ETL-Pipeline, die aufgrund eines Eingabevalidierungsfehlers fehlschlägt, im Bereich Step Functions Inspector.
