

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à.

# Implementa e gestisci un data lake serverless sul cloud AWS utilizzando l'infrastruttura come codice
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code"></a>

*Kirankumar Chandrashekar e Abdel Jaidi, Amazon Web Services*

## Riepilogo
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-summary"></a>

Questo modello descrive come utilizzare l'[elaborazione e l'infrastruttura senza server](https://aws.amazon.com/serverless/) [come codice](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) (IaC) per implementare e amministrare un data lake sul cloud Amazon Web Services (AWS). Questo modello si basa sul workshop [Serverless Data Lake Framework (SDLF)](https://sdlf.workshop.aws/) sviluppato da AWS.

SDLF è una raccolta di risorse riutilizzabili che accelera la distribuzione di data lake aziendali sul cloud AWS e aiuta a velocizzare la distribuzione alla produzione. Viene utilizzato per implementare la struttura di base di un data lake seguendo le migliori pratiche.

SDLF implementa un processo di integrazione continua/distribuzione continua (CI/CD) in tutta la distribuzione del codice e dell'infrastruttura utilizzando servizi AWS come AWS, AWS e CodePipeline AWS. CodeBuild CodeCommit

Questo modello utilizza più servizi serverless AWS per semplificare la gestione dei data lake. Questi includono Amazon Simple Storage Service (Amazon S3) e Amazon DynamoDB per lo storage, AWS Lambda e AWS Glue per l'informatica e Amazon Events, Amazon Simple Queue Service (Amazon SQS) CloudWatch e AWS Step Functions per l'orchestrazione.

I servizi di codice AWS CloudFormation e AWS fungono da livello IaC per fornire distribuzioni riproducibili e veloci con operazioni e amministrazione semplici.

## Prerequisiti e limitazioni
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo.
+ [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)), installata e configurata. 
+ Un client Git, installato e configurato.
+ Il [workshop SDLF](https://sdlf.workshop.aws/), aperto in una finestra del browser Web e pronto per l'uso. 

## Architecture
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-architecture"></a>

![\[Implementazione e amministrazione di un data lake sul cloud AWS.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/f4fc3ad2-1c4f-45ea-bc86-2db13105a173/images/e0cfff30-f0f8-4fc1-8e84-a152ef615c58.png)


 Il diagramma di architettura illustra un processo basato sugli eventi con i seguenti passaggi. 

1. Dopo aver aggiunto un file al bucket S3 di dati grezzi, una notifica di evento Amazon S3 viene inserita in una coda SQS. Ogni notifica viene consegnata come file JSON, che contiene metadati come il nome del bucket S3, la chiave dell'oggetto o il timestamp.

1. Questa notifica viene utilizzata da una funzione Lambda che indirizza l'evento al processo di estrazione, trasformazione e caricamento (ETL) corretto in base ai metadati. La funzione Lambda può anche utilizzare configurazioni contestuali archiviate in una tabella Amazon DynamoDB. Questo passaggio consente il disaccoppiamento e la scalabilità su più applicazioni nel data lake.

1. L'evento viene indirizzato alla prima funzione Lambda del processo ETL, che trasforma e sposta i dati dall'area dei dati grezzi all'area di staging per il data lake. Il primo passo consiste nell'aggiornare il catalogo completo. Questa è una tabella DynamoDB che contiene tutti i metadati dei file del data lake. Ogni riga di questa tabella contiene metadati operativi su un singolo oggetto archiviato in Amazon S3. Viene effettuata una chiamata sincrona a una funzione Lambda che esegue una trasformazione della luce, un'operazione computazionalmente poco costosa (come la conversione di un file da un formato all'altro), sull'oggetto S3. Poiché è stato aggiunto un nuovo oggetto al bucket S3 di staging, il catalogo completo viene aggiornato e viene inviato un messaggio alla coda SQS in attesa della fase successiva dell'ETL.

1. Una regola CloudWatch Events attiva una funzione Lambda ogni 5 minuti. Questa funzione verifica se i messaggi sono stati recapitati alla coda SQS dalla fase ETL precedente. Se è stato recapitato un messaggio, la funzione Lambda avvia la seconda funzione di [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/sample-start-workflow.html) nel processo ETL.

1. Una trasformazione pesante viene quindi applicata a un batch di file. Questa trasformazione complessa è un'operazione computazionalmente costosa, come una chiamata sincrona a un job AWS Glue, un'attività AWS Fargate, una fase Amazon EMR o un notebook Amazon. SageMaker I metadati delle tabelle vengono estratti dai file di output utilizzando un crawler AWS Glue, che aggiorna il catalogo AWS Glue. I metadati dei file vengono inoltre aggiunti alla tabella di catalogo completa in DynamoDB. Infine, viene eseguita anche una fase di qualità dei dati che sfrutta [Deequ](https://github.com/awslabs/deequ).

**Stack tecnologico**
+  CloudWatch Eventi Amazon
+ AWS CloudFormation
+ AWS CodePipeline
+ AWS CodeBuild
+ AWS CodeCommit
+ Amazon DynamoDB
+ AWS Glue
+ AWS Lambda
+ Simple Storage Service (Amazon S3)
+ Amazon SQS
+ AWS Step Functions

## Tools (Strumenti)
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-tools"></a>
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) — CloudWatch Events offre un flusso quasi in tempo reale di eventi di sistema che descrivono i cambiamenti nelle risorse AWS.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html): CloudFormation aiuta a creare e fornire implementazioni di infrastrutture AWS in modo prevedibile e ripetuto.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html): CodeBuild è un servizio di build completamente gestito che compila il codice sorgente, esegue test unitari e produce artefatti pronti per la distribuzione.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html): CodeCommit è un servizio di controllo delle versioni ospitato da AWS che puoi utilizzare per archiviare e gestire risorse private (come codice sorgente e file binari).
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html): CodePipeline è un servizio di distribuzione continua che puoi utilizzare per modellare, visualizzare e automatizzare i passaggi necessari per rilasciare continuamente le modifiche al software.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) — DynamoDB è un servizio di database NoSQL completamente gestito che offre prestazioni veloci e prevedibili con scalabilità. 
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) — AWS Glue è un servizio ETL completamente gestito che semplifica la preparazione e il caricamento dei dati per l'analisi.
+ [AWS Lambda — Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) supporta l'esecuzione di codice senza effettuare il provisioning o la gestione di server. Lambda esegue il codice solo quando è necessario e si dimensiona automaticamente, da poche richieste al giorno a migliaia al secondo. 
+ [Amazon S3 — Amazon Simple](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) Storage Service (Amazon S3) è un servizio di storage di oggetti altamente scalabile. Amazon S3 può essere utilizzato per un'ampia gamma di soluzioni di storage, tra cui siti Web, applicazioni mobili, backup e data lake.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) - AWS Step Functions è un orchestratore di funzioni senza server che semplifica la sequenza delle funzioni AWS Lambda e di più servizi AWS in applicazioni aziendali critiche.
+ [Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) — Amazon Simple Queue Service (Amazon SQS) è un servizio di accodamento dei messaggi completamente gestito che ti aiuta a disaccoppiare e scalare microservizi, sistemi distribuiti e applicazioni serverless.
+ [Deequ](https://github.com/awslabs/deequ) — Deequ è uno strumento che ti aiuta a calcolare i parametri di qualità dei dati per set di dati di grandi dimensioni, definire e verificare i vincoli di qualità dei dati e rimanere informato sui cambiamenti nella distribuzione dei dati.

**Archivio di codice**

Il codice sorgente e le risorse per SDLF sono disponibili nel repository [AWS Labs. GitHub ](https://github.com/awslabs/aws-serverless-data-lake-framework/)

## Epiche
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-epics"></a>

### Configura la CI/CD pipeline per il provisioning di IAc
<a name="set-up-the-ci-cd-pipeline-to-provision-iac"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura la CI/CD pipeline per gestire IAc per il data lake. | Accedi alla Console di gestione AWS e segui i passaggi della sezione [Configurazione iniziale](https://sdlf.workshop.aws/en/10-deployment/100-setup.html) del workshop SDLF. Questo crea le CI/CD risorse iniziali, come CodeCommit repository, CodeBuild ambienti e CodePipeline pipeline che forniscono e gestiscono IaC per il data lake. | DevOps ingegnere | 

### Controllo della versione dell'IaC
<a name="version-control-the-iac"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Clona il CodeCommit repository sul tuo computer locale. | Seguite i passaggi indicati nella sezione [Implementazione delle basi del workshop](https://sdlf.workshop.aws/en/10-deployment/200-foundations.html) SDLF. Questo ti aiuta a clonare il repository Git che ospita IAc nel tuo ambiente locale. Per ulteriori informazioni, consulta [Connessione ai CodeCommit repository](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html) dalla documentazione. CodeCommit  | DevOps ingegnere | 
| Modifica i CloudFormation modelli. | Usa la tua workstation locale e un editor di codice per modificare i CloudFormation modelli in base ai tuoi casi d'uso o ai tuoi requisiti. Inviali nel repository Git clonato localmente. Per ulteriori informazioni, consulta [Working with AWS CloudFormation templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) dalla CloudFormation documentazione AWS. | DevOps ingegnere | 
| Invia le modifiche al CodeCommit repository.  | Il codice dell'infrastruttura è ora sotto il controllo della versione e le modifiche alla base di codice vengono tracciate. Quando invii una modifica al CodeCommit repository, la applica CodePipeline automaticamente all'infrastruttura e la invia a. CodeBuild Se utilizzi la CLI AWS SAM in CodeBuild, esegui i comandi `sam package` and`sam deploy`. Se usi l'interfaccia a riga di comando di AWS, esegui i comandi `aws cloudformation package` and`aws cloudformation deploy`. | DevOps ingegnere | 

## Risorse correlate
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-resources"></a>

**Configura la CI/CD pipeline per il provisioning di IaC**
+ [Workshop SDLF — Configurazione iniziale](https://sdlf.workshop.aws/en/10-deployment/100-setup.html)

**Controllo della versione dell'IAc**
+ [Workshop SDLF — Implementazione delle basi](https://sdlf.workshop.aws/en/10-deployment/200-foundations.html)
+ [Connessione ai repository CodeCommit ](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)
+ [Lavorare con i CloudFormation modelli AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)

**Altre risorse**
+ [Architettura di riferimento della pipeline di analisi dei dati senza server AWS](https://aws.amazon.com/blogs/big-data/aws-serverless-data-analytics-pipeline-reference-architecture/)
+ [Documentazione SDLF](https://sdlf.readthedocs.io/en/latest/)