Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Orchestra una pipeline ETL con convalida, trasformazione e partizionamento utilizzando AWS Step Functions
Sandip Gangapadhyay, Amazon Web Services
Riepilogo
Questo modello descrive come creare una pipeline di estrazione, trasformazione e caricamento (ETL) senza server per convalidare, trasformare, comprimere e partizionare un set di dati CSV di grandi dimensioni per l'ottimizzazione delle prestazioni e dei costi. La pipeline è orchestrata AWS Step Functions e include funzionalità di gestione degli errori, tentativi automatici e notifica agli utenti.
Quando un file CSV viene caricato in una cartella sorgente del bucket Amazon Simple Storage Service (Amazon S3), la pipeline ETL inizia a funzionare. La pipeline convalida il contenuto e lo schema del file CSV di origine, trasforma il file CSV in un formato Apache Parquet compresso, partiziona il set di dati per anno, mese e giorno e lo archivia in una cartella separata per l'elaborazione degli strumenti di analisi.
Prerequisiti e limitazioni
Prerequisiti
Account AWS Un attivo.
AWS Command Line Interface (AWS CLI) installato e configurato con il tuo Account AWS, in modo da poter creare AWS risorse distribuendo uno AWS CloudFormation stack. Si consiglia di utilizzare la AWS CLI versione 2. Per istruzioni, consulta Installazione o aggiornamento alla versione più recente di AWS CLI nella AWS CLI documentazione. Per le istruzioni di configurazione, consulta Configurazione e impostazioni dei file di credenziali nella AWS CLI documentazione.
Un bucket Amazon S3.
Un set di dati CSV con lo schema corretto. (L'archivio di codice
incluso in questo modello fornisce un file CSV di esempio con lo schema e il tipo di dati corretti che è possibile utilizzare.) Un browser Web che supporta il. AWS Management Console(Vedi l'elenco dei browser supportati
). AWS Glue accesso alla console.
AWS Step Functions accesso alla console.
Limitazioni
In AWS Step Functions, il limite massimo per la conservazione dei registri cronologici è di 90 giorni. Per ulteriori informazioni, consulta le quote del servizio Step Functions nella AWS Step Functions documentazione.
Versioni del prodotto
Python 3.13 per AWS Lambda
AWS Glue versione 4.0
Architettura

Il flusso di lavoro illustrato nel diagramma è costituito da questi passaggi di alto livello:
L'utente carica un file CSV nella cartella di origine in Amazon S3.
Un evento di notifica di Amazon S3 avvia una AWS Lambda funzione che avvia la AWS Step Functions macchina a stati.
La funzione Lambda convalida lo schema e il tipo di dati del file CSV non elaborato.
A seconda dei risultati della convalida:
Se la convalida del file sorgente ha esito positivo, il file viene spostato nella cartella dello stage per un'ulteriore elaborazione.
Se la convalida fallisce, il file viene spostato nella cartella degli errori e viene inviata una notifica di errore tramite Amazon Simple Notification Service (Amazon SNS).
Un AWS Glue crawler crea lo schema del file raw dalla cartella stage in Amazon S3.
Un AWS Glue job trasforma, comprime e partiziona il file raw in formato Parquet.
Il AWS Glue processo sposta inoltre il file nella cartella Transform in Amazon S3.
Il AWS Glue crawler crea lo schema dal file trasformato. Lo schema risultante può essere utilizzato da qualsiasi processo di analisi. Puoi anche utilizzare Amazon Athena per eseguire query ad hoc.
Se la pipeline viene completata senza errori, il file dello schema viene spostato nella cartella di archivio. Se vengono rilevati errori, il file viene invece spostato nella cartella degli errori.
Amazon SNS invia una notifica che indica l'esito positivo o negativo in base allo stato di completamento della pipeline.
Tutte le AWS risorse utilizzate in questo modello sono serverless. Non ci sono server da gestire.
Strumenti
Servizi AWS
AWS Glue
— AWS Glue è un servizio ETL completamente gestito che semplifica la preparazione e il caricamento dei dati per l'analisi da parte dei clienti. AWS Step Functions
— AWS Step Functions è un servizio di orchestrazione senza server che consente di combinare AWS Lambda funzioni e altro Servizi AWS per creare applicazioni aziendali critiche. Attraverso la console AWS Step Functions grafica, puoi vedere il flusso di lavoro dell'applicazione come una serie di passaggi guidati dagli eventi. Amazon S3 — Amazon Simple
Storage Service (Amazon S3) è un servizio di storage di oggetti che offre scalabilità, disponibilità dei dati, sicurezza e prestazioni leader del settore. Amazon SNS — Amazon Simple
Notification Service (Amazon SNS) è un servizio di messaggistica ad alta disponibilità, durevole, sicuro e completamente pub/sub gestito che consente di disaccoppiare microservizi, sistemi distribuiti e applicazioni serverless. AWS Lambda
— AWS Lambda è un servizio di elaborazione che consente di eseguire codice senza fornire o gestire server. AWS Lambda esegue il codice solo quando necessario e ridimensiona automaticamente, da poche richieste al giorno a migliaia al secondo.
Codice
Il codice per questo pattern è disponibile su GitHub, nella pipeline ETL
template.yml
— AWS CloudFormation modello per creare la pipeline ETL con. AWS Step Functionsparameter.json
— Contiene tutti i parametri e i valori dei parametri. Aggiorna questo file per modificare i valori dei parametri, come descritto nella sezione Epics.myLayer/python
folder — Contiene i pacchetti Python necessari per creare il AWS Lambda layer richiesto per questo progetto.lambda
folder — Contiene le seguenti funzioni Lambda:move_file.py
— Sposta il set di dati di origine nella cartella di archiviazione, trasformazione o errore.check_crawler.py
— Controlla lo stato del AWS Glue crawler tante volte quante configurate dalla variabile diRETRYLIMIT
ambiente prima di inviare un messaggio di errore.start_crawler.py
— Avvia il crawler. AWS Gluestart_step_function.py
— Inizia. AWS Step Functionsstart_codebuild.py
— Avvia il AWS CodeBuild progetto.validation.py
— Convalida il set di dati grezzi di input.s3object.py
— Crea la struttura di directory richiesta all'interno del bucket Amazon S3.notification.py
— Invia notifiche di successo o di errore alla fine della pipeline.
Per utilizzare il codice di esempio, segui le istruzioni nella sezione Epics.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Clona il repository di codice di esempio. |
| Developer |
Aggiorna i valori dei parametri. | Nella copia locale del repository, modificate il
| Developer |
Carica il codice sorgente nel bucket Amazon S3. | Prima di distribuire il AWS CloudFormation modello che automatizza la pipeline ETL, devi impacchettare i file di origine per il modello e caricarli in un bucket Amazon S3. Per fare ciò, esegui il seguente comando con il tuo profilo preconfigurato: AWS CLI
dove:
| Developer |
Attività | Descrizione | Competenze richieste |
---|---|---|
Implementa il CloudFormation modello. | Per distribuire il AWS CloudFormation modello, esegui il comando seguente: AWS CLI
dove:
| Developer |
Controlla lo stato di avanzamento. | Sulla AWS CloudFormation console | Developer |
Annota il nome del AWS Glue database. | La scheda Output per lo stack mostra il nome del AWS Glue database. Il nome chiave è. | Developer |
Attività | Descrizione | Competenze richieste |
---|---|---|
Avvia la pipeline ETL. |
| Developer |
Controlla il set di dati partizionato. | Al termine della pipeline ETL, verifica che il set di dati partizionato sia disponibile nella cartella di trasformazione di Amazon S3 (o nel nome della cartella che hai | Developer |
Controlla il database partizionato. AWS Glue |
| Developer |
Esegui interrogazioni. | (Facoltativo) Usa Amazon Athena per eseguire query ad hoc sul database partizionato e trasformato. Per istruzioni, consulta Esegui query SQL in Amazon Athena nella AWS documentazione. | Analista di database |
Risoluzione dei problemi
Problema | Soluzione |
---|---|
AWS Identity and Access Management autorizzazioni (IAM) per il AWS Glue job e il crawler | Se personalizzi ulteriormente il AWS Glue job o il crawler, assicurati di concedere le autorizzazioni IAM appropriate nel ruolo IAM utilizzato dal AWS Glue job o di fornire le autorizzazioni relative ai dati a. AWS Lake Formation Per ulteriori informazioni, consulta la documentazione relativa ad AWS. |
Risorse correlate
Servizio AWS documentazione
Informazioni aggiuntive
Il diagramma seguente mostra il AWS Step Functions flusso di lavoro per una pipeline ETL di successo, dal pannello AWS Step Functions Inspector.

Il diagramma seguente mostra il AWS Step Functions flusso di lavoro per una pipeline ETL che fallisce a causa di un errore di convalida dell'input, dal pannello Step Functions Inspector.
