

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

# Analisi
<a name="analytics-pattern-list"></a>

**Topics**
+ [Analizza i dati di Amazon Redshift in Microsoft SQL Server Analysis Services](analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services.md)
+ [Analizza e visualizza dati JSON annidati con Amazon Athena e Amazon Quick Sight](analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.md)
+ [Automatizza l'inserimento dei dati da Amazon S3 AWS Data Exchange](automate-data-ingestion-from-aws-data-exchange-into-amazon-s3.md)
+ [Automatizza l'applicazione della crittografia in AWS Glue utilizzando un modello AWS CloudFormation](automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.md)
+ [Crea una pipeline di dati per importare, trasformare e analizzare i dati di Google Analytics utilizzando il AWS DataOps Development Kit](build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.md)
+ [Crea una pipeline di elaborazione video utilizzando Amazon Kinesis Video Streams e AWS Fargate](build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate.md)
+ [Crea una pipeline di servizi ETL per caricare i dati in modo incrementale da Amazon S3 ad Amazon Redshift utilizzando AWS Glue](build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue.md)
+ [Crea una rete dati aziendale con Amazon DataZone e AWS CDK AWS CloudFormation](build-enterprise-data-mesh-amazon-data-zone.md)
+ [Calcola il valore a rischio (VaR) utilizzando i servizi AWS](calculate-value-at-risk-var-by-using-aws-services.md)
+ [Configura l'accesso tra account a un catalogo di dati AWS Glue condiviso utilizzando Amazon Athena](configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena.md)
+ [Convertire la funzionalità temporale Teradata NORMALIZE in Amazon Redshift SQL](convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql.md)
+ [Convertire la funzionalità Teradata RESET WHEN in Amazon Redshift SQL](convert-the-teradata-reset-when-feature-to-amazon-redshift-sql.md)
+ [Implementa e gestisci un data lake serverless sul cloud AWS utilizzando l'infrastruttura come codice](deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code.md)
+ [Applica l'etichettatura dei cluster Amazon EMR al momento del lancio](enforce-tagging-of-amazon-emr-clusters-at-launch.md)
+ [Assicurati che la registrazione di Amazon EMR su Amazon S3 sia abilitata al momento del lancio](ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch.md)
+ [Genera dati di test utilizzando un job AWS Glue e Python](generate-test-data-using-an-aws-glue-job-and-python.md)
+ [Inserimento conveniente di dati IoT direttamente in Amazon S3 con AWS IoT Greengrass](cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.md)
+ [Avvia un job Spark in un cluster EMR transitorio utilizzando una funzione Lambda](launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function.md)
+ [Esegui la migrazione dei carichi di lavoro Apache Cassandra su Amazon Keyspaces utilizzando AWS Glue](migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.md)
+ [Esegui la migrazione di Oracle Business Intelligence 12c al cloud AWS dai server locali](migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.md)
+ [Migrazione di uno stack ELK su Elastic Cloud su AWS](migrate-an-elk-stack-to-elastic-cloud-on-aws.md)
+ [Migrare i dati verso il Cloud AWS utilizzando Starburst](migrate-data-to-the-aws-cloud-by-using-starburst.md)
+ [Ottimizza l'ingestione ETL delle dimensioni dei file di input su AWS](optimize-the-etl-ingestion-of-input-file-size-on-aws.md)
+ [Orchestra una pipeline ETL con convalida, trasformazione e partizionamento utilizzando AWS Step Functions](orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.md)
+ [Esegui analisi avanzate con Amazon Redshift ML](perform-advanced-analytics-using-amazon-redshift-ml.md)
+ [Interroga le tabelle Amazon DynamoDB con SQL utilizzando Amazon Athena](query-amazon-dynamodb-tables-sql-amazon-athena.md)
+ [Accedi, esegui query e unisciti a tabelle Amazon DynamoDB utilizzando Athena](access-query-and-join-amazon-dynamodb-tables-using-athena.md)
+ [Imposta l'ordinamento specifico della lingua per i risultati delle query di Amazon Redshift utilizzando un UDF scalare in Python](set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf.md)
+ [Sottoscrivi una funzione Lambda alle notifiche di eventi dai bucket S3 in diverse regioni AWS](subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions.md)
+ [Tre tipi di job ETL di AWS Glue per la conversione dei dati in Apache Parquet](three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet.md)
+ [Visualizza i log di controllo di Amazon Redshift utilizzando Amazon Athena e Amazon QuickSight](visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight.md)
+ [Visualizza i report sulle credenziali IAM per tutti gli account AWS utilizzando Amazon Quick Sight](visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.md)
+ [Altri modelli](analytics-more-patterns-pattern-list.md)

# Analizza i dati di Amazon Redshift in Microsoft SQL Server Analysis Services
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services"></a>

*Sunil Vora, Amazon Web Services*

## Riepilogo
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-summary"></a>

Questo modello descrive come connettere e analizzare i dati di Amazon Redshift in Microsoft SQL Server Analysis Services, utilizzando il provider Intellisoft OLE DB o il provider CData ADO.NET per l'accesso al database.

Amazon Redshift è un servizio di data warehouse nel cloud in scala petabyte interamente gestito. SQL Server Analysis Services è uno strumento di elaborazione analitica online (OLAP) che puoi utilizzare per analizzare i dati provenienti da data mart e data warehouse come Amazon Redshift. Puoi utilizzare SQL Server Analysis Services per creare cubi OLAP dai tuoi dati per un'analisi rapida e avanzata dei dati.  

## Prerequisiti e limitazioni
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-prereqs"></a>

**Ipotesi**
+ Questo modello descrive come configurare SQL Server Analysis Services e Intellisoft OLE DB Provider o CData ADO.NET Provider per Amazon Redshift su un'istanza Amazon Elastic Compute Cloud (Amazon). EC2 In alternativa, puoi installarli entrambi su un host nel tuo data center aziendale.

**Prerequisiti**
+ Un account AWS attivo
+ Un cluster Amazon Redshift con credenziali

## Architecture
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-architecture"></a>

**Stack tecnologico di origine**
+ Un cluster Amazon Redshift

**Stack tecnologico Target**
+ Servizi di analisi Microsoft SQL Server

**Architettura di origine e destinazione**

![\[Analisi dei dati di Amazon Redshift in Microsoft SQL Server Analysis Services\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/e444fec0-e00f-4cc6-acc6-4ffc61b654a0/images/6f29dab5-1ea7-452f-9b07-d1d23ae469a2.png)


## Tools (Strumenti)
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-tools"></a>
+ [Microsoft Visual Studio 2019 (edizione comunitaria)](https://visualstudio.microsoft.com/vs/)
+ [Intellisoft OLE DB Provider per Amazon Redshift (versione di prova](https://www.pgoledb.com/index.php?option=com_filecabinet&view=files&id=1&Itemid=68)) [ CData o ADO.NET Provider per Amazon Redshift](https://www.cdata.com/kb/tech/redshift-ado-ssas.rst) (versione di prova)

## Epiche
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-epics"></a>

### Analizza le tabelle
<a name="analyze-tables"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Analizza le tabelle e i dati da importare. | Identifica le tabelle Amazon Redshift da importare e le relative dimensioni. | DBA | 

### Configura l' EC2 istanza e installa gli strumenti
<a name="set-up-ec2-instance-and-install-tools"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura un' EC2 istanza. | Nel tuo account AWS, crea un' EC2 istanza in una sottorete pubblica o privata. | Amministratore di sistema | 
| Installa strumenti per l'accesso al database. | Scarica e installa [Intellisoft OLE DB Provider per Amazon Redshift](https://www.pgoledb.com/index.php?option=com_filecabinet&view=files&id=1&Itemid=68) ([CData o ADO.NET Provider per Amazon](https://www.cdata.com/kb/tech/redshift-ado-ssas.rst) Redshift).  | Amministratore di sistema | 
| Installa Visual Studio. | Scarica e installa [Visual Studio 2019 (Community Edition)](https://visualstudio.microsoft.com/vs/).  | Amministratore di sistema | 
| Installa le estensioni. | Installa l'estensione **Microsoft Analysis Services Projects** in Visual Studio. | Amministratore di sistema | 
| Crea un progetto. | Crea un nuovo progetto di modello tabulare in Visual Studio per archiviare i dati di Amazon Redshift. In Visual Studio, scegli l'opzione **Analysis Services Tabular Project** durante la creazione del progetto. | DBA | 

### Crea sorgenti di dati e importa tabelle
<a name="create-data-source-and-import-tables"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un'origine dati Amazon Redshift. | Crea un'origine dati Amazon Redshift utilizzando Intellisoft OLE DB Provider per Amazon Redshift (o ADO.NET CData Provider per Amazon Redshift) e le tue credenziali Amazon Redshift. | Amazon Redshift, DBA | 
| Importa tabelle. | Seleziona e importa tabelle e viste da Amazon Redshift nel tuo progetto SQL Server Analysis Services. | Amazon Redshift, DBA | 

### Pulizia dopo la migrazione
<a name="clean-up-after-migration"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Eliminare l' EC2 istanza. | Elimina l' EC2 istanza che hai avviato in precedenza. | Amministratore di sistema | 

## Risorse correlate
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-resources"></a>
+ [Amazon Redshift (documentazione](https://docs.aws.amazon.com/redshift/) AWS)
+ [Installare SQL Server Analysis Services](https://docs.microsoft.com/en-us/analysis-services/instances/install-windows/install-analysis-services?view=asallproducts-allversions) (documentazione Microsoft)
+ [Tabular Model Designer](https://docs.microsoft.com/en-us/analysis-services/tabular-models/tabular-model-designer-ssas?view=asallproducts-allversions) (documentazione Microsoft)
+ [Panoramica dei cubi OLAP per analisi avanzate](https://docs.microsoft.com/en-us/system-center/scsm/olap-cubes-overview?view=sc-sm-2019) (documentazione Microsoft)
+ [Microsoft Visual Studio 2019 (edizione comunitaria)](https://visualstudio.microsoft.com/vs/)
+ [Intellisoft OLE DB Provider per Amazon Redshift (versione di prova)](https://www.pgoledb.com/index.php?option=com_filecabinet&view=files&id=1&Itemid=68) 
+ [CData Provider ADO.NET per Amazon Redshift (versione di prova)](https://www.cdata.com/kb/tech/redshift-ado-ssas.rst)

# Analizza e visualizza dati JSON annidati con Amazon Athena e Amazon Quick Sight
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight"></a>

*Anoop Singh, Amazon Web Services*

## Riepilogo
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-summary"></a>

Questo modello spiega come tradurre una struttura di dati annidata in formato JSON in una vista tabulare utilizzando Amazon Athena e quindi visualizzare i dati in Amazon Quick Sight.

Puoi utilizzare dati in formato JSON per feed di dati basati su API provenienti da sistemi operativi per creare prodotti di dati. Questi dati possono anche aiutarti a comprendere meglio i tuoi clienti e le loro interazioni con i tuoi prodotti, in modo da personalizzare le esperienze degli utenti e prevedere i risultati.

## Prerequisiti e limitazioni
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-prereqs"></a>

**Prerequisiti**
+ Un attivo Account AWS
+ Un file JSON che rappresenta una struttura di dati annidata (questo modello fornisce un file di esempio)

**Limitazioni:**
+ Le funzionalità JSON si integrano bene con le funzioni orientate a SQL esistenti in Athena. Tuttavia, non sono compatibili con ANSI SQL e si prevede che il file JSON contenga ogni record su una riga separata. Potrebbe essere necessario utilizzare la `ignore.malformed.json` proprietà in Athena per indicare se i record JSON non validi devono essere trasformati in caratteri nulli o generare errori. Per ulteriori informazioni, consulta [Best practice per la lettura dei dati JSON nella documentazione](https://docs.aws.amazon.com/athena/latest/ug/parsing-JSON.html) di Athena.
+ Questo modello considera solo piccole e semplici quantità di dati in formato JSON. Se desideri utilizzare questi concetti su larga scala, prendi in considerazione l'applicazione del partizionamento dei dati e il consolidamento dei dati in file più grandi.

## Architecture
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-architecture"></a>

Il diagramma seguente mostra l'architettura e il flusso di lavoro per questo modello. Le strutture di dati annidate sono archiviate in Amazon Simple Storage Service (Amazon S3) in formato JSON. In Athena, i dati JSON vengono mappati su una struttura dati Athena. Quindi crei una vista per analizzare i dati e visualizzare la struttura dei dati in Quick Sight.

![\[Analisi e visualizzazione di dati JSON annidati su AWS.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/e9ad39a1-e0a4-4429-bdc0-594b68707761/images/474e8747-626f-468c-9c27-c007af79bf2d.png)


## Tools (Strumenti)
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-tools"></a>

**Servizi AWS**
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati. Questo modello utilizza Amazon S3 per archiviare il file JSON.
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) è un servizio di query interattivo che ti aiuta ad analizzare i dati direttamente in Amazon S3 utilizzando SQL standard. Questo modello utilizza Athena per interrogare e trasformare i dati JSON. Con poche azioni in Console di gestione AWS, puoi indirizzare Athena ai tuoi dati in Amazon S3 e utilizzare SQL standard per eseguire query singole. Athena è serverless, quindi non c'è alcuna infrastruttura da configurare o gestire e paghi solo per le query che esegui. Athena si ridimensiona automaticamente ed esegue le query in parallelo, quindi i risultati sono rapidi, anche con set di dati di grandi dimensioni e query complesse.     
+ [Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/quick-bi.html) è un servizio di business intelligence (BI) su scala cloud che ti aiuta a visualizzare, analizzare e generare report sui dati in un'unica dashboard. Quick Sight ti consente di creare e pubblicare facilmente dashboard interattive che includono approfondimenti sull'apprendimento automatico (ML). Puoi accedere a queste dashboard da qualsiasi dispositivo e incorporarle nelle tue applicazioni, portali e siti Web.

**Esempio di codice**

Il seguente file JSON fornisce una struttura di dati annidata che è possibile utilizzare in questo modello.

```
{
  "symbol": "AAPL",
  "financials": [
    {
      "reportDate": "2017-03-31",
      "grossProfit": 20591000000,
      "costOfRevenue": 32305000000,
      "operatingRevenue": 52896000000,
      "totalRevenue": 52896000000,
      "operatingIncome": 14097000000,
      "netIncome": 11029000000,
      "researchAndDevelopment": 2776000000,
      "operatingExpense": 6494000000,
      "currentAssets": 101990000000,
      "totalAssets": 334532000000,
      "totalLiabilities": 200450000000,
      "currentCash": 15157000000,
      "currentDebt": 13991000000,
      "totalCash": 67101000000,
      "totalDebt": 98522000000,
      "shareholderEquity": 134082000000,
      "cashChange": -1214000000,
      "cashFlow": 12523000000,
      "operatingGainsLosses": null
    }
  ]
}
```

## Epiche
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-epics"></a>

### Configura un bucket S3
<a name="set-up-an-s3-bucket"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un bucket S3. | **Per creare un bucket per archiviare il file JSON, accedi a Console di gestione AWS, apri la console [Amazon S3](https://console.aws.amazon.com/s3/), quindi scegli Crea bucket.** Per ulteriori informazioni, consulta [Creazione di un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) nella documentazione di Amazon S3.  | Amministratore di sistema | 
| Aggiungi i dati JSON annidati. | Carica il tuo file JSON nel bucket S3. Per un file JSON di esempio, consulta la sezione precedente. Per istruzioni, consulta [Caricamento di oggetti](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) nella documentazione di Amazon S3. | Amministratore di sistema | 

### Analizza i dati in Athena
<a name="analyze-data-in-ate"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea una tabella per mappare i dati JSON. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html)Per ulteriori informazioni sulla creazione di tabelle, consulta la documentazione di [Athena](https://docs.aws.amazon.com/athena/latest/ug/creating-tables.html). | Developer | 
| Crea una vista per l'analisi dei dati. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html)Per ulteriori informazioni sulla creazione di viste, consulta la documentazione di [Athena](https://docs.aws.amazon.com/athena/latest/ug/create-view.html). | Developer | 
| Analizza e convalida i dati. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html) | Developer | 

### Visualizza i dati in Quick Sight
<a name="visualize-data-in-qsight"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura Athena come fonte di dati in Quick Sight. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html) | Amministratore di sistema | 
| Visualizza i dati in Quick Sight. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html) | Analista dei dati | 

## Risorse correlate
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-resources"></a>
+ [Documentazione Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html)
+ [Tutorial Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/example-analysis.html)
+ [Lavorare con JSON annidato](https://aws.amazon.com/blogs/big-data/create-tables-in-amazon-athena-from-nested-json-and-mappings-using-jsonserde/) (post sul blog)

# Automatizza l'inserimento dei dati da Amazon S3 AWS Data Exchange
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3"></a>

*Adnan Alvee e Manikanta Gona, Amazon Web Services*

## Riepilogo
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-summary"></a>

Questo modello fornisce un CloudFormation modello che ti consente di inserire automaticamente i dati dal tuo data lake AWS Data Exchange in Amazon Simple Storage Service (Amazon S3). 

AWS Data Exchange è un servizio che semplifica lo scambio sicuro di set di dati basati su file nel cloud AWS. AWS Data Exchange i set di dati sono basati su abbonamento. In qualità di abbonato, puoi anche accedere alle revisioni dei set di dati man mano che i provider pubblicano nuovi dati. 

Il CloudFormation modello crea un evento in Amazon CloudWatch Events e una AWS Lambda funzione. L'evento rileva eventuali aggiornamenti al set di dati a cui ti sei abbonato. Se è presente un aggiornamento, CloudWatch avvia una funzione Lambda, che copia i dati nel bucket S3 specificato. Quando i dati sono stati copiati correttamente, Lambda ti invia una notifica Amazon Simple Notification Service (Amazon SNS).

## Prerequisiti e limitazioni
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-prereqs"></a>

**Prerequisiti**
+ Una attiva Account AWS
+ Sottoscrizione a un set di dati in AWS Data Exchange

**Limitazioni**
+ Il CloudFormation modello deve essere distribuito separatamente per ogni set di dati sottoscritto in. AWS Data Exchange

## Architecture
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-architecture"></a>

**Stack tecnologico Target**
+ AWS Lambda
+ Simple Storage Service (Amazon S3)
+ AWS Data Exchange
+ Amazon CloudWatch
+ Amazon SNS

**Architettura Target**

![\[CloudWatch avvia una funzione Lambda per copiare i dati nel bucket S3 e inviare notifiche Amazon SNS.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/059816dc-5a71-4942-9c7f-ac977072eebc/images/ec021620-47c1-4fb5-95a9-3b8985accc56.png)


**Automazione e scalabilità**

Puoi utilizzare il CloudFormation modello più volte per i set di dati che desideri inserire nel data lake.

## Tools (Strumenti)
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-tools"></a>
+ [AWS Data Exchange](https://docs.aws.amazon.com/data-exchange/latest/userguide/what-is.html)consente AWS ai clienti di scambiare facilmente in modo sicuro set di dati basati su file in. Cloud AWS In qualità di abbonato, puoi trovare e abbonarti a centinaia di prodotti di fornitori di dati qualificati. Quindi, puoi scaricare rapidamente il set di dati o copiarlo su Amazon S3 per utilizzarlo in una varietà di servizi di AWS analisi e apprendimento automatico. Chiunque abbia un Account AWS può essere AWS Data Exchange abbonato.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) consente di eseguire il codice senza effettuare il provisioning dei server o senza gestirli. Lambda esegue il codice solo quando è necessario e si dimensiona automaticamente, da poche richieste al giorno a migliaia al secondo. Paghi solo per il tempo di elaborazione che consumi; non ci sono costi quando il codice non è in esecuzione. Con Lambda, puoi eseguire codice praticamente per qualsiasi tipo di applicazione o servizio di backend senza alcuna amministrazione. Lambda esegue il codice su un'infrastruttura di elaborazione ad alta disponibilità e gestisce tutte le risorse di calcolo, tra cui la manutenzione di server e sistemi operativi, il provisioning della capacità e il ridimensionamento automatico, il monitoraggio del codice e la registrazione.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) fornisce storage per Internet. È possibile utilizzare Amazon S3 per memorizzare e recuperare qualsiasi volume di dati, in qualunque momento e da qualunque luogo tramite il Web.
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) offre un flusso quasi in tempo reale di eventi di sistema che descrivono i cambiamenti nelle AWS risorse. Utilizzando semplici regole che puoi configurare rapidamente, puoi abbinare gli eventi e indirizzarli a una o più funzioni o flussi di destinazione. CloudWatch Gli eventi vengono a conoscenza dei cambiamenti operativi man mano che si verificano. Risponde a questi cambiamenti operativi e adotta le azioni correttive necessarie, inviando messaggi per rispondere all'ambiente, attivando funzioni, apportando modifiche e acquisendo informazioni sullo stato. ****Puoi anche utilizzare CloudWatch Events per pianificare azioni automatiche che si avviano automaticamente in determinati momenti utilizzando le espressioni cron o rate.****
+ [Amazon Simple Notification Service (Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)) consente alle applicazioni, agli utenti finali e ai dispositivi di inviare e ricevere istantaneamente notifiche dal cloud. Amazon SNS fornisce argomenti (canali di comunicazione) per la messaggistica ad alto throughput e basata su push. many-to-many Utilizzando gli argomenti di Amazon SNS, gli editori possono distribuire messaggi a un gran numero di abbonati per l'elaborazione parallela, tra cui code Amazon Simple Queue Service (Amazon SQS), funzioni Lambda e webhook. HTTP/S Puoi anche utilizzare Amazon SNS per inviare notifiche agli utenti finali tramite push, SMS ed e-mail mobili.

## Epiche
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-epics"></a>

### Iscriviti a un set di dati
<a name="subscribe-to-a-data-set"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Abbonarsi a un set di dati. | Nella AWS Data Exchange console, sottoscrivi un set di dati. Per istruzioni, consulta [Sottoscrizione ai prodotti di dati AWS Data Exchange nella](https://docs.aws.amazon.com/data-exchange/latest/userguide/subscribe-to-data-sets.html) AWS documentazione. | Informazioni generali su AWS | 
| Nota gli attributi del set di dati. | Annota Regione AWS l'ID e l'ID di revisione del set di dati. Ti servirà per il CloudFormation modello nel passaggio successivo. | Informazioni generali su AWS | 

### Implementa il modello CloudFormation
<a name="deploy-the-cfn-template"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un bucket e una cartella S3. | Se disponi già di un data lake in Amazon S3, crea una cartella in cui archiviare i dati da cui importare. AWS Data Exchange Se stai distribuendo il modello a scopo di test, crea un nuovo bucket S3 e annota il nome del bucket e il prefisso della cartella per il passaggio successivo. | Informazioni generali su AWS | 
| Implementa il CloudFormation modello. | Distribuisci il CloudFormation modello fornito come allegato a questo modello. Per istruzioni, consulta la [CloudFormation documentazione](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html).**Configura i seguenti parametri in modo che corrispondano alle impostazioni Account AWS del set di dati e del bucket S3: **Dataset Regione AWS, Dataset** **ID, **Revision ID****, **S3 Bucket Name** (ad esempio`DOC-EXAMPLE-BUCKET`), **Folder Prefix** (ad esempio) ed Email for SNS Notification. `myfolder/`** **È possibile impostare il parametro Dataset Name su qualsiasi nome.** Quando si distribuisce il modello, esegue una funzione Lambda per importare automaticamente il primo set di dati disponibile nel set di dati. L'ingestione successiva avviene quindi automaticamente, non appena arrivano nuovi dati nel set di dati. | Informazioni generali su AWS | 

## Risorse correlate
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-resources"></a>
+ [Abbonamento ai prodotti di dati su AWS Data Exchange](https://docs.aws.amazon.com/data-exchange/latest/userguide/subscribe-to-data-sets.html) (AWS Data Exchange documentazione)

## Allegati
<a name="attachments-059816dc-5a71-4942-9c7f-ac977072eebc"></a>

[Per accedere al contenuto aggiuntivo associato a questo documento, decomprimi il seguente file: attachment.zip](samples/p-attach/059816dc-5a71-4942-9c7f-ac977072eebc/attachments/attachment.zip)

# Automatizza l'applicazione della crittografia in AWS Glue utilizzando un modello AWS CloudFormation
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template"></a>

*Diogo Guedes, Amazon Web Services*

## Riepilogo
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-summary"></a>

Questo modello mostra come configurare e automatizzare l'applicazione della crittografia in AWS Glue utilizzando un CloudFormation modello AWS. Il modello crea tutte le configurazioni e le risorse necessarie per applicare la crittografia. Queste risorse includono una configurazione iniziale, un controllo preventivo creato da una EventBridge regola Amazon e una funzione AWS Lambda.

## Prerequisiti e limitazioni
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo
+ Autorizzazioni per distribuire il CloudFormation modello e le relative risorse

**Limitazioni**

Questo controllo di sicurezza è regionale. Devi implementare il controllo di sicurezza in ogni regione AWS in cui desideri configurare l'applicazione della crittografia in AWS Glue.

## Architecture
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-architecture"></a>

**Stack tecnologico Target**
+ Amazon CloudWatch Logs (da AWS Lambda)
+  EventBridge Regola Amazon
+  CloudFormation Stack AWS
+ AWS CloudTrail
+ Ruolo e policy gestiti da AWS Identity and Access Management (IAM)
+ AWS Key Management Service (AWS KMS)
+ Alias AWS KMS
+ Funzione AWS Lambda
+ AWS Systems Manager Parameter Store

**Architettura Target**

Il diagramma seguente mostra come automatizzare l'applicazione della crittografia in AWS Glue.

![\[Il diagramma mostra come automatizzare l'applicazione della crittografia in AWS Glue utilizzando un CloudFormation modello.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/d50d0659-5592-44d0-8fcb-7a2983712640/images/272a7fb2-ecbc-41f7-a556-d555e4e39a59.png)


Il diagramma mostra il flusso di lavoro seguente:

1. Un [CloudFormation modello](https://github.com/aws-samples/aws-custom-guardrail-event-driven/blob/main/CloudFormation/aws-custom-guardrail-event-driven.yaml) crea tutte le risorse, inclusa la configurazione iniziale e il controllo investigativo per l'applicazione della crittografia in AWS Glue.

1. Una EventBridge regola rileva un cambiamento di stato nella configurazione di crittografia.

1. Viene richiamata una funzione Lambda per la valutazione e la registrazione tramite Logs. CloudWatch In caso di rilevamento non conforme, il Parameter Store viene ripristinato con un Amazon Resource Name (ARN) per una chiave AWS KMS. Il servizio viene ripristinato allo stato conforme con la crittografia abilitata.

**Automazione e scalabilità**

Se utilizzi [AWS Organizations](https://aws.amazon.com/organizations/), puoi utilizzare [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) per distribuire questo modello in più account in cui desideri abilitare l'applicazione della crittografia in AWS Glue.

## Tools (Strumenti)
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-tools"></a>
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ti CloudWatch aiuta a monitorare i parametri delle tue risorse AWS e delle applicazioni che esegui su AWS in tempo reale.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) è un servizio di bus eventi senza server che ti aiuta a connettere le tue applicazioni con dati in tempo reale provenienti da una varietà di fonti. Ad esempio, funzioni Lambda, endpoint di invocazione HTTP che utilizzano destinazioni API o bus di eventi in altri account AWS.
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) ti CloudFormation aiuta a configurare le risorse AWS, effettuarne il provisioning in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita su account e regioni AWS.
+ [AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) ti CloudTrail aiuta a abilitare il controllo operativo e dei rischi, la governance e la conformità del tuo account AWS.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) è un servizio di estrazione, trasformazione e caricamento (ETL) completamente gestito. Ti aiuta a classificare, pulire, arricchire e spostare i dati in modo affidabile tra archivi di dati e flussi di dati.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ti aiuta a creare e controllare chiavi crittografiche per proteggere i tuoi dati.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di elaborazione che ti aiuta a eseguire codice senza dover fornire o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di calcolo che utilizzi.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) ti aiuta a gestire le applicazioni e l'infrastruttura in esecuzione nel cloud AWS. Semplifica la gestione delle applicazioni e delle risorse, riduce i tempi di rilevamento e risoluzione dei problemi operativi e ti aiuta a gestire le tue risorse AWS in modo sicuro su larga scala.

**Codice**

[Il codice per questo pattern è disponibile nel repository -driven. GitHub aws-custom-guardrail-event](https://github.com/aws-samples/aws-custom-guardrail-event-driven/blob/main/CloudFormation/aws-custom-guardrail-event-driven.yaml)

## Best practice
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-best-practices"></a>

AWS Glue supporta la crittografia dei dati a riposo per la [creazione di lavori in AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) e lo [sviluppo di script utilizzando endpoint di sviluppo](https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint.html).

Prendi in considerazione le seguenti best practice:
+ Configura i job ETL e gli endpoint di sviluppo per utilizzare le chiavi AWS KMS per scrivere dati crittografati inattivi.
+ Crittografa i metadati archiviati nel [catalogo dati di AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro) utilizzando chiavi gestite tramite AWS KMS.
+ [Usa le chiavi AWS KMS per crittografare i segnalibri dei lavori e i log generati dai crawler e dai job ETL.](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)

## Epiche
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-epics"></a>

### Avvia il modello CloudFormation
<a name="launch-the-cloudformation-template"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Implementa il CloudFormation modello. | Scarica il `aws-custom-guardrail-event-driven.yaml` modello dal GitHub [repository](https://github.com/aws-samples/aws-custom-guardrail-event-driven/blob/main/CloudFormation/aws-custom-guardrail-event-driven.yaml), quindi [distribuiscilo.](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/deploy/index.html) Lo `CREATE_COMPLETE` stato indica che il modello è stato distribuito correttamente.Il modello non richiede parametri di input. | Architetto del cloud | 

### Verifica le impostazioni di crittografia in AWS Glue
<a name="verify-the-encryption-settings-in-aws-glue"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Controlla le configurazioni delle chiavi AWS KMS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.html) | Architetto del cloud | 

### Verifica l'applicazione della crittografia
<a name="test-the-encryption-enforcement"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Identifica l'impostazione di crittografia in CloudFormation. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.html) | Architetto del cloud | 
| Passa l'infrastruttura predisposta a uno stato non conforme. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.html)Il guardrail rileva lo stato di non conformità in AWS Glue dopo aver deselezionato le caselle di controllo, quindi impone la conformità correggendo automaticamente l'errata configurazione della crittografia. Di conseguenza, le caselle di controllo per la crittografia devono essere nuovamente selezionate dopo aver aggiornato la pagina. | Architetto del cloud | 

## Risorse correlate
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-resources"></a>
+ [Creazione di uno stack sulla CloudFormation console AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) ( CloudFormation documentazione AWS)
+ [Creazione di una regola CloudWatch Events che si attiva su una chiamata API AWS utilizzando AWS CloudTrail](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-CloudTrail-Rule.html) ( CloudWatch documentazione Amazon)
+ [Configurazione della crittografia in AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/set-up-encryption.html) (documentazione AWS Glue)

# Crea una pipeline di dati per importare, trasformare e analizzare i dati di Google Analytics utilizzando il AWS DataOps Development Kit
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit"></a>

*Anton Kukushkin e Rudy Puig, Amazon Web Services*

## Riepilogo
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-summary"></a>

Questo modello descrive come creare una pipeline di dati per importare, trasformare e analizzare i dati di Google Analytics utilizzando il AWS DataOps Development Kit (DDK) e altro.AWS Servizi AWS Il AWS DDK è un framework di sviluppo open source che ti aiuta a creare flussi di lavoro di dati e un'architettura di dati moderna su. AWS Uno degli obiettivi principali del AWS DDK è quello di farti risparmiare tempo e fatica tipicamente dedicati ad attività di pipeline di dati ad alta intensità di manodopera, come l'orchestrazione delle pipeline, la creazione di infrastrutture e la creazione dell'infrastruttura alla base di tale infrastruttura. DevOps Puoi affidare queste attività ad alta intensità di lavoro a AWS DDK in modo da poterti concentrare sulla scrittura di codice e su altre attività di alto valore.

## Prerequisiti e limitazioni
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-prereqs"></a>

**Prerequisiti**
+ Un attivo Account AWS
+ Un AppFlow connettore Amazon per Google Analytics, [configurato](https://docs.aws.amazon.com/appflow/latest/userguide/google-analytics.html)
+ [Python](https://www.python.org/downloads/) e [pip (gestore](https://pip.pypa.io/en/stable/cli/pip_download/) di pacchetti di Python)
+ Git, installato e [configurato](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup)
+ AWS Command Line Interface (AWS CLI), [installato](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [configurato](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ AWS Cloud Development Kit (AWS CDK), [installato](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install)

**Versioni del prodotto**
+ Python 3.7 o versioni successive
+ pip 9.0.3 o versioni successive

## Architecture
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-architecture"></a>

**Stack tecnologico**
+ Amazon AppFlow
+ Amazon Athena
+ Amazon CloudWatch
+ Amazon EventBridge
+ Amazon Simple Storage Service (Amazon S3)
+ Amazon Simple Queue Service (Amazon SQS)
+ AWS DataOps Kit di sviluppo (AWS DDK)
+ AWS Lambda

**Architettura Target**

Il diagramma seguente mostra il processo basato sugli eventi che acquisisce, trasforma e analizza i dati di Google Analytics.

![\[Acquisizione, trasformazione e analisi dei dati di Google Analytics con i servizi AWS.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/edf40222-2867-4d4a-9153-ab29785b6662/images/8c38b472-153b-4497-982c-8efb97d2f7a5.png)


Il diagramma mostra il flusso di lavoro seguente:

1. Una regola per gli eventi CloudWatch pianificati di Amazon richiama Amazon. AppFlow

1. Amazon AppFlow inserisce i dati di Google Analytics in un bucket S3.

1. Dopo che i dati sono stati inseriti dal bucket S3, EventBridge vengono generate notifiche di eventi, acquisite da una regola CloudWatch Events e quindi inserite in una coda Amazon SQS.

1. Una funzione Lambda consuma gli eventi dalla coda Amazon SQS, legge i rispettivi oggetti S3, trasforma gli oggetti in formato Apache Parquet, scrive gli oggetti trasformati nel bucket S3 e quindi crea o aggiorna la definizione della tabella. AWS Glue Data Catalog 

1. Una query Athena viene eseguita sulla tabella.

## Tools (Strumenti)
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-tools"></a>

**AWS strumenti**
+ [Amazon AppFlow](https://docs.aws.amazon.com/appflow/latest/userguide/what-is-appflow.html) è un servizio di integrazione completamente gestito che consente di scambiare dati in modo sicuro tra applicazioni SaaS (Software as a Service).
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) è un servizio di query interattivo che ti aiuta ad analizzare i dati direttamente in Amazon S3 utilizzando SQL standard.
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ti CloudWatch aiuta a monitorare i parametri delle tue AWS risorse e delle applicazioni su cui esegui AWS in tempo reale.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) è un servizio di bus eventi senza server che ti aiuta a connettere le tue applicazioni con dati in tempo reale provenienti da una varietà di fonti. Ad esempio, AWS Lambda funzioni, endpoint di invocazione HTTP che utilizzano destinazioni API o bus di eventi in altro modo. Account AWS
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
+ [Amazon Simple Queue Service (Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)) fornisce una coda ospitata sicura, durevole e disponibile che ti aiuta a integrare e disaccoppiare sistemi e componenti software distribuiti.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)è un framework per definire l'infrastruttura cloud in codice e fornirla tramite. CloudFormation
+ [AWS DataOps Development Kit (AWS DDK)](https://github.com/awslabs/aws-ddk) è un framework di sviluppo open source che ti aiuta a creare flussi di lavoro di dati e un'architettura di dati moderna su. AWS

**Codice**

Il codice per questo pattern è disponibile negli archivi GitHub [AWS DataOps Development Kit (AWS DDK)](https://github.com/awslabs/aws-ddk) e [Analyzing Google Analytics with Amazon AppFlow, Amazon Athena AWS DataOps e](https://github.com/aws-samples/aws-ddk-examples/tree/main/google-analytics-data-using-appflow/python) Development Kit.

## Epiche
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-epics"></a>

### Prepara l'ambiente
<a name="prepare-the-environment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Clona il codice sorgente. | Per clonare il codice sorgente, esegui il seguente comando:<pre>git clone https://github.com/aws-samples/aws-ddk-examples.git</pre> | DevOps ingegnere | 
| Crea un ambiente virtuale. | Passa alla directory del codice sorgente, quindi esegui il comando seguente per creare un ambiente virtuale:<pre>cd google-analytics-data-using-appflow/python && python3 -m venv .venv</pre> | DevOps ingegnere | 
| Installa le dipendenze. | Per attivare l'ambiente virtuale e installare le dipendenze, esegui il seguente comando:<pre>source .venv/bin/activate && pip install -r requirements.txt</pre> | DevOps ingegnere | 

### Implementa l'applicazione che utilizza la tua pipeline di dati
<a name="deploy-the-application-that-uses-your-data-pipeline"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Avvia l'ambiente. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.html) | DevOps ingegnere | 
| Distribuisci i dati. | Per distribuire la pipeline di dati, esegui il comando. `cdk deploy --profile [AWS_PROFILE]` | DevOps ingegnere | 

### Test della distribuzione
<a name="test-the-deployment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Convalida lo stato dello stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.html) | DevOps ingegnere | 

## risoluzione dei problemi
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| La distribuzione non riesce durante la creazione di una `AWS::AppFlow::Flow` risorsa e viene visualizzato il seguente errore: `Connector Profile with name ga-connection does not exist` | Conferma di aver creato un AppFlow connettore Amazon per Google Analytics e di avergli dato un nome`ga-connection`.Per istruzioni, consulta [Google Analytics](https://docs.aws.amazon.com/appflow/latest/userguide/google-analytics.html) nella AppFlow documentazione di Amazon. | 

## Risorse correlate
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-resources"></a>
+ [AWS DataOps Kit di sviluppo (AWS DDK) (GitHub)](https://github.com/awslabs/aws-ddk)
+ [AWS Esempi DDK (](https://github.com/aws-samples/aws-ddk-examples)) GitHub

## Informazioni aggiuntive
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-additional"></a>

AWS Le pipeline di dati DDK sono composte da una o più fasi. Nei seguenti esempi di codice, li usi `AppFlowIngestionStage` per importare dati da Google Analytics, `SqsToLambdaStage` gestire la trasformazione dei dati ed `AthenaSQLStage` eseguire la query Athena.

Innanzitutto, vengono create le fasi di trasformazione e ingestione dei dati, come mostra il seguente esempio di codice:

```
        appflow_stage = AppFlowIngestionStage(
            self,
            id="appflow-stage",
            flow_name=flow.flow_name,
        )
        sqs_lambda_stage = SqsToLambdaStage(
            self,
            id="lambda-stage",
            lambda_function_props={
                "code": Code.from_asset("./ddk_app/lambda_handlers"),
                "handler": "handler.lambda_handler",
                "layers": [
                    LayerVersion.from_layer_version_arn(
                        self,
                        id="layer",
                        layer_version_arn=f"arn:aws:lambda:{self.region}:336392948345:layer:AWSDataWrangler-Python39:1",
                    )
                ],
                "runtime": Runtime.PYTHON_3_9,
            },
        )
        # Grant lambda function S3 read & write permissions
        bucket.grant_read_write(sqs_lambda_stage.function)
        # Grant Glue database & table permissions
        sqs_lambda_stage.function.add_to_role_policy(
            self._get_glue_db_iam_policy(database_name=database.database_name)
        )
        athena_stage = AthenaSQLStage(
            self,
            id="athena-sql",
            query_string=[
                (
                    "SELECT year, month, day, device, count(user_count) as cnt "
                    f"FROM {database.database_name}.ga_sample "
                    "GROUP BY year, month, day, device "
                    "ORDER BY cnt DESC "
                    "LIMIT 10; "
                )
            ],
            output_location=Location(
                bucket_name=bucket.bucket_name, object_key="query-results/"
            ),
            additional_role_policy_statements=[
                self._get_glue_db_iam_policy(database_name=database.database_name)
            ],
        )
```

Successivamente, il `DataPipeline` costrutto viene utilizzato per «collegare» gli stadi utilizzando EventBridge delle regole, come mostra il seguente esempio di codice:

```
        (
            DataPipeline(self, id="ingestion-pipeline")
            .add_stage(
                stage=appflow_stage,
                override_rule=Rule(
                    self,
                    "schedule-rule",
                    schedule=Schedule.rate(Duration.hours(1)),
                    targets=appflow_stage.targets,
                ),
            )
            .add_stage(
                stage=sqs_lambda_stage,
                # By default, AppFlowIngestionStage stage emits an event after the flow run finishes successfully
                # Override rule below changes that behavior to call the the stage when data lands in the bucket instead
                override_rule=Rule(
                    self,
                    "s3-object-created-rule",
                    event_pattern=EventPattern(
                        source=["aws.s3"],
                        detail={
                            "bucket": {"name": [bucket.bucket_name]},
                            "object": {"key": [{"prefix": "ga-data"}]},
                        },
                        detail_type=["Object Created"],
                    ),
                    targets=sqs_lambda_stage.targets,
                ),
            )
            .add_stage(stage=athena_stage)
        )
```

Per altri esempi di codice, consulta il GitHub [repository Analisi dei dati di Google Analytics con Amazon AppFlow, Amazon Athena AWS DataOps e Development Kit](https://github.com/aws-samples/aws-ddk-examples/tree/main/google-analytics-data-using-appflow/python).

# Crea una pipeline di elaborazione video utilizzando Amazon Kinesis Video Streams e AWS Fargate
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate"></a>

*Piotr Chotkowski e Pushparaju Thangavel, Amazon Web Services*

## Riepilogo
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-summary"></a>

Questo modello dimostra come utilizzare [Amazon Kinesis Video Streams e](https://aws.amazon.com/kinesis/video-streams/) [AWS Fargate](https://aws.amazon.com/fargate) per estrarre fotogrammi da un flusso video e archiviarli come file di immagine per un'ulteriore elaborazione in [Amazon Simple Storage Service (Amazon](https://aws.amazon.com/s3/) S3). 

Il pattern fornisce un'applicazione di esempio sotto forma di progetto Java Maven. Questa applicazione definisce l'infrastruttura AWS utilizzando l'[AWS Cloud Development Kit](https://aws.amazon.com/cdk/) (AWS CDK). Sia la logica di elaborazione dei frame che le definizioni dell'infrastruttura sono scritte nel linguaggio di programmazione Java. È possibile utilizzare questa applicazione di esempio come base per sviluppare la propria pipeline di elaborazione video in tempo reale o per creare la fase di preelaborazione video di una pipeline di apprendimento automatico. 

## Prerequisiti e limitazioni
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo
+ Java SE Development Kit (JDK) 11, installato
+ [Apache Maven](https://maven.apache.org/), installato
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html), installato
+ [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)) versione 2, installata
+ [Docker](https://docs.docker.com/get-docker/) (necessario per creare immagini Docker da utilizzare nelle definizioni delle attività di AWS Fargate), installato

**Limitazioni**

Questo modello è inteso come dimostrazione di concetto o come base per un ulteriore sviluppo. Non dovrebbe essere utilizzato nella sua forma attuale nelle installazioni di produzione.

**Versioni del prodotto**
+ Questo modello è stato testato con la versione CDK AWS 1.77.0 (vedi versioni [AWS](https://docs.aws.amazon.com/cdk/api/latest/versions.html) CDK)
+ JDK 11
+ AWS CLI versione 2

## Architecture
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-architecture"></a>

**Stack tecnologico Target**
+ Amazon Kinesis Video Streams
+ Attività AWS Fargate
+ Coda Amazon Simple Queue Service (Amazon SQS)
+ Bucket Amazon S3

**Architettura Target**

![\[Architettura per l'utilizzo di Kinesis Video Streams e Fargate per creare una pipeline di elaborazione video.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/9d1442c2-f3ee-47fd-8cce-90d9206ce4d4/images/a60e585f-27be-4dd6-897b-c38adf1d283f.png)


L'utente crea un flusso video Kinesis, carica un video e invia un messaggio JSON contenente dettagli sul flusso video Kinesis in ingresso e sul bucket S3 di uscita in una coda SQS. AWS Fargate, che esegue l'applicazione principale in un contenitore, estrae il messaggio dalla coda SQS e inizia a estrarre i frame. Ogni frame viene salvato in un file di immagine e archiviato nel bucket S3 di destinazione.

**Automazione e scalabilità**

L'applicazione di esempio può essere scalata sia orizzontalmente che verticalmente all'interno di una singola regione AWS. La scalabilità orizzontale può essere ottenuta aumentando il numero di attività AWS Fargate distribuite che leggono dalla coda SQS. La scalabilità verticale può essere ottenuta aumentando il numero di thread di suddivisione dei frame e di pubblicazione di immagini nell'applicazione. Queste impostazioni vengono passate come variabili di ambiente all'applicazione nella definizione della [QueueProcessingFargateService](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ecs-patterns.QueueProcessingFargateService.html)risorsa nell'AWS CDK. A causa della natura della distribuzione dello stack AWS CDK, puoi distribuire questa applicazione in più regioni e account AWS senza sforzi aggiuntivi.

## Tools (Strumenti)
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-tools"></a>

**Strumenti**
+ [AWS CDK](https://aws.amazon.com/cdk/) è un framework di sviluppo software per definire l'infrastruttura e le risorse cloud utilizzando linguaggi di programmazione come Python TypeScript JavaScript, Java e C\$1/.Net.
+ [Amazon Kinesis Video](https://aws.amazon.com/kinesis/video-streams/) Streams è un servizio AWS completamente gestito che puoi utilizzare per lo streaming di video in diretta dai dispositivi al cloud AWS o creare applicazioni per l'elaborazione video in tempo reale o l'analisi video orientata ai batch.
+ [AWS Fargate](https://aws.amazon.com/fargate) è un motore di elaborazione serverless per container. Fargate elimina la necessità di effettuare il provisioning e la gestione dei server e consente di concentrarsi sullo sviluppo delle applicazioni.
+ [Amazon S3](https://aws.amazon.com/s3/) è un servizio di storage di oggetti che offre scalabilità, disponibilità dei dati, sicurezza e prestazioni.
+ [Amazon SQS](https://aws.amazon.com/sqs/) è un servizio di accodamento dei messaggi completamente gestito che consente di disaccoppiare e scalare microservizi, sistemi distribuiti e applicazioni serverless.

**Codice**
+ È allegato un file.zip del progetto applicativo di esempio (). `frame-splitter-code.zip`

## Epiche
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-epics"></a>

### Implementa l'infrastruttura
<a name="deploy-the-infrastructure"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Avvia il daemon Docker. | Avvia il demone Docker sul tuo sistema locale. L'AWS CDK utilizza Docker per creare l'immagine utilizzata nel task AWS Fargate. È necessario eseguire Docker prima di procedere al passaggio successivo. | Sviluppatore, DevOps ingegnere | 
| Compilare il progetto. | Scaricate l'applicazione di `frame-splitter-code` esempio (allegata) ed estraetene il contenuto in una cartella sul computer locale. Prima di poter implementare l'infrastruttura, è necessario creare il progetto [Java Maven](https://maven.apache.org/). Al prompt dei comandi, accedete alla directory principale del progetto e create il progetto eseguendo il comando: <pre>mvn clean install</pre> | Sviluppatore, DevOps ingegnere | 
| Avvia il CDK AWS. | (Solo utenti AWS CDK per la prima volta) Se è la prima volta che utilizzi il CDK AWS, potresti dover avviare l'ambiente eseguendo il comando AWS CLI:<pre>cdk bootstrap --profile "$AWS_PROFILE_NAME" </pre>where `$AWS_PROFILE_NAME` contiene il nome del profilo AWS contenuto nelle tue credenziali AWS. In alternativa, puoi rimuovere questo parametro per utilizzare il profilo predefinito. Per ulteriori informazioni, consulta la [documentazione di AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html). | Sviluppatore, DevOps ingegnere | 
| Implementa lo stack CDK AWS. | In questa fase, crei le risorse di infrastruttura richieste (coda SQS, bucket S3, definizione di attività AWS Fargate) nel tuo account AWS, crei l'immagine Docker necessaria per il task AWS Fargate e distribuisci l'applicazione. Al prompt dei comandi, accedi alla directory principale del progetto ed esegui il comando:<pre>cdk deploy --profile "$AWS_PROFILE_NAME" --all </pre>where `$AWS_PROFILE_NAME` contiene il nome del profilo AWS contenuto nelle tue credenziali AWS. In alternativa, puoi rimuovere questo parametro per utilizzare il profilo predefinito. Conferma la distribuzione. Annota i valori **QueueUrl**e **Bucket** dall'output della distribuzione CDK; ti serviranno nei passaggi successivi. L'AWS CDK crea gli asset, li carica sul tuo account AWS e crea tutte le risorse dell'infrastruttura. Puoi osservare il processo di creazione delle risorse nella [ CloudFormation console AWS](https://console.aws.amazon.com/cloudformation/). Per ulteriori informazioni, consulta la documentazione di [AWS e la CloudFormation documentazione](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) di [AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/hello_world.html#hello_world_tutorial_deploy). | Sviluppatore, DevOps ingegnere | 
| Crea un flusso video. | In questo passaggio, crei un flusso video Kinesis che fungerà da flusso di input per l'elaborazione video. Assicurati di avere la CLI AWS installata e configurata. Nella CLI di AWS, esegui:<pre>aws kinesisvideo --profile "$AWS_PROFILE_NAME" create-stream --stream-name "$STREAM_NAME" --data-retention-in-hours "24" </pre>where `$AWS_PROFILE_NAME` contiene il nome del profilo AWS dalle tue credenziali AWS (o rimuovi questo parametro per utilizzare il profilo predefinito) ed `$STREAM_NAME` è qualsiasi nome di stream valido. In alternativa, puoi creare un flusso video utilizzando la console Kinesis seguendo i passaggi nella documentazione di [Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-createstream.html#gs-createstream-console). Prendi nota dell'AWS Resource Name (ARN) dello stream creato; ti servirà in seguito. | Sviluppatore, DevOps ingegnere | 

### Esegui un esempio
<a name="run-an-example"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Carica il video nello stream. | Nella cartella del progetto dell'`frame-splitter-code`applicazione di esempio, aprite il `ProcessingTaskTest.java` file contenuto nella `src/test/java/amazon/awscdk/examples/splitter` cartella. Sostituite le `streamName`**** variabili `profileName`**** and con i valori utilizzati nei passaggi precedenti. Per caricare il video di esempio nello stream video Kinesis creato nel passaggio precedente, esegui:  <pre>amazon.awscdk.examples.splitter.ProcessingTaskTest#testExample test</pre>In alternativa, puoi caricare il tuo video utilizzando uno dei metodi descritti nella documentazione di [Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk.html). | Sviluppatore, ingegnere DevOps  | 
| Avvia l'elaborazione video. | Ora che hai caricato un video nello stream video di Kinesis, puoi iniziare a elaborarlo. Per avviare la logica di elaborazione, devi inviare un messaggio con i dettagli alla coda SQS creata dal CDK AWS durante la distribuzione. Per inviare un messaggio utilizzando la CLI di AWS, esegui:<pre>aws sqs --profile "$AWS_PROFILE_NAME" send-message --queue-url QUEUE_URL --message-body MESSAGE </pre>where `$AWS_PROFILE_NAME` contiene il nome del profilo AWS dalle tue credenziali AWS (rimuovi questo parametro per utilizzare il profilo predefinito), `QUEUE_URL` è il **QueueUrl**valore dell'output di AWS CDK ed `MESSAGE` è una stringa JSON nel seguente formato: <pre>{ "streamARN": "STREAM_ARN", "bucket": "BUCKET_NAME", "s3Directory": "test-output" }</pre>dove `STREAM_ARN` è l'ARN del flusso video creato in un passaggio precedente ed `BUCKET_NAME` è il valore **Bucket** dall'output di AWS CDK. L'invio di questo messaggio avvia l'elaborazione video. In alternativa, puoi inviare un messaggio utilizzando la console Amazon SQS, come descritto nella documentazione di [Amazon SQS.](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-using-send-messages.html) | Sviluppatore, ingegnere DevOps  | 
| Visualizza le immagini dei fotogrammi video. | Puoi vedere le immagini risultanti nel bucket di output S3 `s3://BUCKET_NAME/test-output` dove si `BUCKET_NAME` trova il valore del **bucket** dall'output di AWS CDK. | Sviluppatore, ingegnere DevOps  | 

## Risorse correlate
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-resources"></a>
+ [Documentazione CDK AWS](https://docs.aws.amazon.com/cdk/latest/guide/home.html)
+ [Riferimento all'API CDK AWS](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-construct-library.html)
+ [Workshop introduttivo su AWS CDK](https://cdkworkshop.com/)
+ [Documentazione di Amazon Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/what-is-kinesis-video.html)
+ [Esempio: identificazione di oggetti nei flussi video mediante SageMaker](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-sagemaker.html)
+ [Esempio: analisi e rendering dei frammenti di Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-renderer.html)
+ [Analizza video live su larga scala in tempo reale utilizzando Amazon Kinesis Video Streams SageMaker](https://aws.amazon.com/blogs/machine-learning/analyze-live-video-at-scale-in-real-time-using-amazon-kinesis-video-streams-and-amazon-sagemaker/) e Amazon (post sul blog di AWS Machine Learning)
+ [Nozioni di base su AWS Fargate](https://aws.amazon.com/fargate/getting-started/)

## Informazioni aggiuntive
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-additional"></a>

**Scelta di un IDE**

Ti consigliamo di utilizzare il tuo IDE Java preferito per creare ed esplorare questo progetto.  

**Pulizia**

Al termine dell'esecuzione di questo esempio, rimuovi tutte le risorse distribuite per evitare costi aggiuntivi dell'infrastruttura AWS. 

Per rimuovere l'infrastruttura e il flusso video, usa questi due comandi nella CLI di AWS:

```
cdk destroy --profile "$AWS_PROFILE_NAME" --all
```

```
aws kinesisvideo --profile "$AWS_PROFILE_NAME" delete-stream --stream-arn "$STREAM_ARN"
```

In alternativa, puoi rimuovere le risorse manualmente utilizzando la CloudFormation console AWS per rimuovere lo CloudFormation stack AWS e la console Kinesis per rimuovere il flusso video Kinesis. Tieni presente che `cdk destroy` non rimuove il bucket S3 di output o le immagini nei repository Amazon Elastic Container Registry (Amazon ECR) (). `aws-cdk/assets` È necessario rimuoverli manualmente.

## Allegati
<a name="attachments-9d1442c2-f3ee-47fd-8cce-90d9206ce4d4"></a>

[Per accedere al contenuto aggiuntivo associato a questo documento, decomprimi il seguente file: attachment.zip](samples/p-attach/9d1442c2-f3ee-47fd-8cce-90d9206ce4d4/attachments/attachment.zip)

# Crea una pipeline di servizi ETL per caricare i dati in modo incrementale da Amazon S3 ad Amazon Redshift utilizzando AWS Glue
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue"></a>

*Rohan Jamadagni e Arunabha Datta, Amazon Web Services*

## Riepilogo
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-summary"></a>

Questo modello fornisce indicazioni su come configurare Amazon Simple Storage Service (Amazon S3) per prestazioni ottimali del data lake e quindi caricare modifiche incrementali ai dati da Amazon S3 in Amazon Redshift utilizzando AWS Glue, eseguendo operazioni di estrazione, trasformazione e caricamento (ETL). 

I file sorgente in Amazon S3 possono avere diversi formati, tra cui file con valori separati da virgole (CSV), XML e JSON. Questo modello descrive come utilizzare AWS Glue per convertire i file sorgente in un formato ottimizzato in termini di costi e prestazioni come Apache Parquet. Puoi interrogare i file Parquet direttamente da Amazon Athena e Amazon Redshift Spectrum. Puoi anche caricare file Parquet in Amazon Redshift, aggregarli e condividere i dati aggregati con i consumatori o visualizzare i dati utilizzando Amazon Quick Sight.

## Prerequisiti e limitazioni
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo.
+ Un bucket sorgente S3 con i privilegi giusti e contenente file CSV, XML o JSON.

**Ipotesi**
+ I file sorgente CSV, XML o JSON sono già caricati in Amazon S3 e sono accessibili dall'account in cui sono configurati AWS Glue e Amazon Redshift.
+ Vengono seguite le best practice per il caricamento dei file, la suddivisione dei file, la compressione e l'utilizzo di un manifesto, come illustrato nella documentazione di [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-S3.html).
+ La struttura del file di origine è inalterata.
+ Il sistema di origine è in grado di importare dati in Amazon S3 seguendo la struttura delle cartelle definita in Amazon S3.
+ Il cluster Amazon Redshift si estende su una singola zona di disponibilità. (Questa architettura è appropriata perché AWS Lambda, AWS Glue e Amazon Athena sono serverless.) Per un'elevata disponibilità, le istantanee del cluster vengono scattate con una frequenza regolare.

**Limitazioni**
+ I formati di file sono limitati a quelli [attualmente supportati da AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html).
+ La reportistica downstream in tempo reale non è supportata.

## Architecture
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-architecture"></a>

**Stack tecnologico di origine**
+ Bucket S3 con file CSV, XML o JSON

**Stack tecnologico Target**
+ Data lake S3 (con archiviazione di file Parquet partizionata)
+ Amazon Redshift

**Architettura Target**

![\[Architettura per il caricamento di modifiche incrementali da Amazon S3 ad Amazon Redshift con AWS Glue.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/105b58ec-56c1-464a-8e69-f625360caa14/images/626aa365-e6e6-4874-a873-1c71adbe5306.png)


 

**Flusso di dati**

![\[Flusso di dati per caricare modifiche incrementali da Amazon S3 ad Amazon Redshift utilizzando AWS Glue.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/105b58ec-56c1-464a-8e69-f625360caa14/images/29569e48-9f2d-4f48-bc59-1f33949d01ca.png)


## Tools (Strumenti)
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-tools"></a>
+ [Amazon S3 — Amazon Simple](https://aws.amazon.com/s3/) 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 Lambda](https://aws.amazon.com/lambda/): AWS Lambda consente di eseguire codice senza effettuare il provisioning o la gestione di server. AWS Lambda è un servizio basato sugli eventi; puoi configurare il codice per l'avvio automatico da altri servizi AWS.
+ [Amazon Redshift — Amazon Redshift](https://aws.amazon.com/redshift/) è un servizio di data warehouse completamente gestito su scala petabyte. Con Amazon Redshift, puoi interrogare petabyte di dati strutturati e semistrutturati nel tuo data warehouse e nel tuo data lake utilizzando SQL standard.
+ [AWS Glue](https://aws.amazon.com/glue/) — AWS Glue è un servizio ETL completamente gestito che semplifica la preparazione e il caricamento dei dati per l'analisi. AWS Glue rileva i tuoi dati e archivia i metadati associati (ad esempio, definizioni di tabelle e schemi) nel catalogo dati di AWS Glue. I dati catalogati sono immediatamente ricercabili, possono essere interrogati e sono disponibili per ETL.
+ [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/): AWS Secrets Manager facilita la protezione e la gestione centralizzata dei segreti necessari per l'accesso alle applicazioni o ai servizi. Il servizio archivia le credenziali del database, le chiavi API e altri segreti ed elimina la necessità di codificare le informazioni sensibili in formato testo semplice. Secrets Manager offre anche la rotazione delle chiavi per soddisfare le esigenze di sicurezza e conformità. È dotato di integrazione integrata per Amazon Redshift, Amazon Relational Database Service (Amazon RDS) e Amazon DocumentDB. È possibile archiviare e gestire centralmente i segreti utilizzando la console Secrets Manager, l'interfaccia a riga di comando (CLI) o l'API Secrets Manager e. SDKs
+ [Amazon Athena](https://aws.amazon.com/athena/) — Amazon Athena è un servizio di query interattivo che semplifica l'analisi dei dati archiviati in Amazon S3. Athena è serverless e integrata con AWS Glue, quindi può interrogare direttamente i dati catalogati utilizzando AWS Glue. Athena è scalabile in modo elastico per offrire prestazioni di query interattive.

## Epiche
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-epics"></a>

### Crea i bucket S3 e la struttura delle cartelle
<a name="create-the-s3-buckets-and-folder-structure"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Analizza i sistemi di origine per la struttura e gli attributi dei dati. | Esegui questa attività per ogni fonte di dati che contribuisce al data lake Amazon S3. | Ingegnere dei dati | 
| Definisci la strategia di partizione e accesso. | Questa strategia dovrebbe basarsi sulla frequenza dell'acquisizione dei dati, sull'elaborazione delta e sulle esigenze di consumo. Assicurati che i bucket S3 non siano aperti al pubblico e che l'accesso sia controllato solo da politiche specifiche basate sui ruoli di servizio. Per ulteriori informazioni, consulta la [Documentazione di Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/using-folders.html). | Ingegnere dei dati | 
| Crea bucket S3 separati per ogni tipo di origine dati e un bucket S3 separato per origine per i dati elaborati (Parquet). | Crea un bucket separato per ogni fonte, quindi crea una struttura di cartelle basata sulla frequenza di inserimento dei dati del sistema di origine, ad esempio. `s3://source-system-name/date/hour` Per i file elaborati (convertiti in formato Parquet), create una struttura simile, ad esempio. `s3://source-processed-bucket/date/hour` Per ulteriori informazioni sulla creazione di bucket S3, consulta la documentazione di [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html). | Ingegnere dei dati | 

### Crea un data warehouse in Amazon Redshift
<a name="create-a-data-warehouse-in-amazon-redshift"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Avvia il cluster Amazon Redshift con i gruppi di parametri e la strategia di manutenzione e backup appropriati. | Usa il segreto del database Secrets Manager per le credenziali degli utenti amministratori durante la creazione del cluster Amazon Redshift. Per informazioni sulla creazione e il dimensionamento di un cluster Amazon Redshift, consulta la documentazione di [Amazon Redshift](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/event-publishing-redshift-cluster.html) e il white paper di [Sizing Cloud Data Warehouses](https://d1.awsstatic.com/whitepapers/Size-Cloud-Data-Warehouse-on-AWS.pdf). | Ingegnere dei dati | 
| Crea e collega il ruolo del servizio IAM al cluster Amazon Redshift. | Il ruolo del servizio AWS Identity and Access Management (IAM) garantisce l'accesso a Secrets Manager e ai bucket S3 di origine. Per ulteriori informazioni, consulta la documentazione AWS sull'[autorizzazione e l'](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html)[aggiunta di un ruolo](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum-add-role.html). | Ingegnere dei dati | 
| Crea lo schema del database. | Segui le best practice di Amazon Redshift per la progettazione di tabelle. In base al caso d'uso, scegli le chiavi di ordinamento e distribuzione appropriate e la migliore codifica di compressione possibile. Per le best practice, consulta la [documentazione di AWS](https://docs.aws.amazon.com/redshift/latest/dg/c_designing-tables-best-practices.html). | Ingegnere dei dati | 
| Configura la gestione del carico di lavoro. | Configura le code di gestione del carico di lavoro (WLM), l'accelerazione delle query brevi (SQA) o la scalabilità simultanea, a seconda delle tue esigenze. Per ulteriori informazioni, consulta [Implementazione della gestione del carico di lavoro](https://docs.aws.amazon.com/redshift/latest/dg/cm-c-implementing-workload-management.html) nella documentazione di Amazon Redshift. | Ingegnere dei dati | 

### Creazione di un segreto in Secrets Manager
<a name="create-a-secret-in-secrets-manager"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un nuovo segreto per archiviare le credenziali di accesso di Amazon Redshift in Secrets Manager. | Questo segreto memorizza le credenziali per l'utente amministratore e per i singoli utenti del servizio di database. Per istruzioni, consulta la [documentazione di Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html). Scegli **Amazon Redshift Cluster** come tipo segreto. Inoltre, nella pagina di **rotazione segreta**, attiva la rotazione. Questo creerà l'utente appropriato nel cluster Amazon Redshift e ruoterà i segreti chiave a intervalli definiti. | Ingegnere dei dati | 
| Crea una policy IAM per limitare l'accesso a Secrets Manager. | Limita l'accesso a Secrets Manager solo agli amministratori di Amazon Redshift e AWS Glue. | Ingegnere dei dati | 

### Configura AWS Glue
<a name="configure-aws-glue"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Nel catalogo dati di AWS Glue, aggiungi una connessione per Amazon Redshift. | Per istruzioni, consulta la [documentazione di AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-connections.html). | Ingegnere dei dati | 
| Crea e associa un ruolo di servizio IAM per AWS Glue per accedere a Secrets Manager, Amazon Redshift e bucket S3. | Per ulteriori informazioni, consulta la [documentazione di AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/create-service-policy.html). | Ingegnere dei dati | 
| Definisci il catalogo dati di AWS Glue per l'origine. | Questa fase prevede la creazione di un database e delle tabelle obbligatorie nel catalogo dati di AWS Glue. Puoi utilizzare un crawler per catalogare le tabelle nel database AWS Glue o definirle come tabelle esterne Amazon Athena. Puoi anche accedere alle tabelle esterne definite in Athena tramite AWS Glue Data Catalog. Consulta la documentazione di AWS per ulteriori informazioni sulla [definizione del Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html) e sulla [creazione di una tabella esterna in Athena](https://docs.aws.amazon.com/athena/latest/ug/creating-tables.html). | Ingegnere dei dati | 
| Crea un job AWS Glue per elaborare i dati di origine. | Il job AWS Glue può essere usato come shell Python o PySpark per standardizzare, deduplicare e pulire i ﬁle dei dati di origine. Per ottimizzare le prestazioni ed evitare di dover interrogare l'intero bucket di origine S3, partiziona il bucket S3 per data, suddiviso per anno, mese, giorno e ora come predicato pushdown per il job AWS Glue. Per ulteriori informazioni, consulta la [documentazione di AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html). Carica i dati elaborati e trasformati nelle partizioni del bucket S3 elaborate in formato Parquet. È possibile interrogare i ﬁle Parquet da Athena. | Ingegnere dei dati | 
| Crea un job AWS Glue per caricare dati in Amazon Redshift. | Il job AWS Glue può essere una shell Python o PySpark caricare i dati invertendo i dati, seguito da un aggiornamento completo. Per i dettagli, consulta la [documentazione di AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job.html) e la sezione *Informazioni aggiuntive*. | Ingegnere dei dati | 
| (Facoltativo) Pianifica i lavori AWS Glue utilizzando i trigger, se necessario. | Il carico di dati incrementale è principalmente guidato da un evento Amazon S3 che fa sì che una funzione AWS Lambda chiami il job AWS Glue. Utilizza la pianificazione basata su trigger di AWS Glue per tutti i carichi di dati che richiedono una pianificazione basata sul tempo anziché una pianificazione basata sugli eventi. | Ingegnere dei dati | 

### Creazione di una funzione Lambda
<a name="create-a-lambda-function"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea e collega un ruolo collegato ai servizi IAM per AWS Lambda per accedere ai bucket S3 e al job AWS Glue. | Crea un ruolo collegato ai servizi IAM per AWS Lambda con una policy per leggere oggetti e bucket Amazon S3 e una policy per accedere all'API AWS Glue per avviare un job AWS Glue. [Per ulteriori informazioni, consulta il Knowledge Center.](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-execution-role-s3-bucket/) | Ingegnere dei dati | 
| Crea una funzione Lambda per eseguire il job AWS Glue in base all'evento Amazon S3 definito. | La funzione Lambda deve essere avviata con la creazione del file manifest di Amazon S3. La funzione Lambda deve passare la posizione della cartella Amazon S3 (ad esempio, bucket/year/month/date/hour source\$1) al job AWS Glue come parametro. Il job AWS Glue utilizzerà questo parametro come predicato pushdown per ottimizzare l'accesso ai file e le prestazioni di elaborazione dei lavori. Per ulteriori informazioni, consulta la [documentazione di AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html). | Ingegnere dei dati | 
| Crea un evento oggetto Amazon S3 PUT per rilevare la creazione di oggetti e chiama la rispettiva funzione Lambda. | L'evento oggetto PUT di Amazon S3 deve essere avviato solo con la creazione del ﬁle manifest. Il ﬁle manifest controlla la funzione Lambda e la concorrenza dei job AWS Glue ed elabora il carico come batch invece di elaborare singoli ﬁle che arrivano in una partizione specifica del bucket di origine S3. Per ulteriori informazioni, consulta la documentazione di [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html). | Ingegnere dei dati | 

## Risorse correlate
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-resources"></a>
+ [Documentazione Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html)
+ [Documentazione AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)
+ [Documentazione Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html)
+ [AWS Lambda](https://aws.amazon.com/lambda/)
+ [Amazon Athena](https://aws.amazon.com/athena/)
+ [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/)

## Informazioni aggiuntive
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-additional"></a>

**Approccio dettagliato per una modifica e un aggiornamento completo**

**Upsert**: è destinato ai set di dati che richiedono l'aggregazione storica, a seconda del caso d'uso aziendale. Segui uno degli approcci descritti in [Aggiornamento e inserimento di nuovi dati](https://docs.aws.amazon.com/redshift/latest/dg/t_updating-inserting-using-staging-tables-.html) (documentazione di Amazon Redshift) in base alle tue esigenze aziendali.

**Aggiornamento completo**: questo è per piccoli set di dati che non necessitano di aggregazioni storiche. Segui uno di questi approcci:

1. Tronca la tabella Amazon Redshift.

1. Carica la partizione corrente dall'area di staging

oppure:

1. Crea una tabella temporanea con i dati della partizione corrente.

1. Elimina la tabella Amazon Redshift di destinazione.

1. Rinomina la tabella temporanea nella tabella di destinazione.

# Crea una rete dati aziendale con Amazon DataZone e AWS CDK AWS CloudFormation
<a name="build-enterprise-data-mesh-amazon-data-zone"></a>

*Dhrubajyoti Mukherjee, Ravi Kumar, Weizhou Sun e Adjoa Taylor, Amazon Web Services*

## Riepilogo
<a name="build-enterprise-data-mesh-amazon-data-zone-summary"></a>

Su Amazon Web Services (AWS), i clienti comprendono che i dati sono la chiave per accelerare l'innovazione e creare valore aziendale. Per gestire questa enorme quantità di dati, puoi adottare un'architettura decentralizzata come la data mesh. Un'architettura data mesh facilita la riflessione sul prodotto, una mentalità che tiene conto dei clienti, degli obiettivi e del mercato. La data mesh aiuta anche a stabilire un modello di governance federato che fornisce un accesso rapido e sicuro ai dati.

In [Strategie per la creazione di una soluzione aziendale basata su data mesh viene AWS illustrato come utilizzare il Data Mesh](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-data-mesh/introduction.html) Strategy Framework per formulare e implementare una strategia di data mesh per l'organizzazione. Utilizzando il Data Mesh Strategy Framework, puoi ottimizzare l'organizzazione dei team e le loro interazioni per accelerare il percorso verso la data mesh.

Questo documento fornisce indicazioni su come creare una rete dati aziendale con [Amazon DataZone](https://docs.aws.amazon.com/datazone/latest/userguide/what-is-datazone.html). Amazon DataZone è un servizio di gestione dei dati per la catalogazione, la scoperta, la condivisione e la gestione dei dati archiviati su fonti AWS, locali e di terze parti. Il modello include artefatti di codice che aiutano a implementare l'infrastruttura di soluzioni di dati basata su data mesh utilizzando e. AWS Cloud Development Kit (AWS CDK) AWS CloudFormation Questo modello è destinato agli architetti e agli ingegneri del cloud. DevOps 

Per informazioni sugli obiettivi di questo modello e sull'ambito della soluzione, consulta la sezione [Informazioni aggiuntive](#build-enterprise-data-mesh-amazon-data-zone-additional).

## Prerequisiti e limitazioni
<a name="build-enterprise-data-mesh-amazon-data-zone-prereqs"></a>

**Prerequisiti**
+ Almeno due account attivi Account AWS: uno per l'account di governance centrale e l'altro per l'account del membro
+ AWS credenziali di amministratore per l'account di governance centrale nell'ambiente di sviluppo
+ AWS Command Line Interface (AWS CLI) [installato](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) per gestirlo Servizi AWS dalla riga di comando
+ Node.js e Node Package Manager (npm) [installati](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) per gestire le applicazioni AWS CDK 
+ AWS CDK Toolkit [installato](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install) a livello globale nell'ambiente di sviluppo utilizzando npm, per sintetizzare e distribuire applicazioni AWS CDK 

  ```
  npm install -g aws-cdk
  ```
+ Python versione 3.12 installata nel tuo ambiente di sviluppo
+ TypeScript installato nel tuo ambiente di sviluppo o installato globalmente utilizzando il compilatore npm:

  ```
  npm install -g typescript
  ```
+ Docker installato nel tuo ambiente di sviluppo
+ Un sistema di controllo della versione come Git per mantenere il codice sorgente della soluzione (consigliato)
+ Un ambiente di sviluppo integrato (IDE) o un editor di testo con supporto per Python e TypeScript (fortemente consigliato)

**Limitazioni**
+ La soluzione è stata testata solo su macchine che eseguono Linux o macOS.
+ Nella versione attuale, la soluzione non supporta l'integrazione di Amazon DataZone e AWS IAM Identity Center per impostazione predefinita. Tuttavia, puoi configurarla per supportare questa integrazione.

**Versioni del prodotto**
+ Python versione 3.12

## Architecture
<a name="build-enterprise-data-mesh-amazon-data-zone-architecture"></a>

Il diagramma seguente mostra un'architettura di riferimento per la rete di dati. L'architettura è basata su Amazon DataZone e utilizza Amazon Simple Storage Service (Amazon S3) AWS Glue Data Catalog e come fonti di dati. L'uso Servizi AWS che utilizzi con Amazon DataZone nell'implementazione della rete di dati potrebbe differire in base ai requisiti della tua organizzazione.

![\[Flusso di lavoro in cinque fasi per gli account dei membri e gli account di governance centralizzati.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/79056dd9-e669-4302-afb8-21e3e0e8a136/images/eacbffca-4f25-405a-a7c8-f89d0fee5682.png)


1. Nei conti dei produttori, i dati grezzi sono idonei al consumo nella loro forma attuale oppure vengono trasformati per il consumo utilizzando AWS Glue. I metadati tecnici per i dati vengono archiviati in Amazon S3 e valutati utilizzando AWS Glue un crawler di dati. [La qualità dei dati viene misurata utilizzando Data Quality.AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/glue-data-quality.html) Il database di origine nel catalogo dati è registrato come risorsa nel DataZone catalogo Amazon. Il DataZone catalogo Amazon è ospitato nell'account di governance centrale utilizzando Amazon DataZone Data Source Job.

1. L'account di governance centrale ospita il DataZone dominio Amazon e il portale DataZone dati Amazon. I produttori e i consumatori Account AWS di dati sono associati al DataZone dominio Amazon. I DataZone progetti Amazon dei produttori e dei consumatori di dati sono organizzati nelle corrispondenti unità di DataZone dominio Amazon.

1. Gli utenti finali degli asset di dati accedono al portale DataZone dati Amazon utilizzando le proprie credenziali AWS Identity and Access Management (IAM) o Single Sign-On (con integrazione tramite IAM Identity Center). Cercano, filtrano e visualizzano le informazioni sugli asset (ad esempio, informazioni sulla qualità dei dati o metadati aziendali e tecnici) nel catalogo DataZone dati di Amazon.

1. Dopo che un utente finale trova la risorsa di dati che desidera, utilizza la funzionalità di DataZone abbonamento Amazon per richiedere l'accesso. Il proprietario dei dati del team di produzione riceve una notifica e valuta la richiesta di abbonamento nel portale DataZone dati di Amazon. Il proprietario dei dati approva o rifiuta la richiesta di abbonamento in base alla sua validità.

1. Dopo che la richiesta di abbonamento è stata concessa e soddisfatta, si accede alla risorsa nell'account del consumatore per le seguenti attività:
   + Sviluppo di modelli AI/ML utilizzando Amazon AI SageMaker 
   + Analisi e reportistica utilizzando Amazon Athena e Amazon Quick

## Tools (Strumenti)
<a name="build-enterprise-data-mesh-amazon-data-zone-tools"></a>

**Servizi AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) è un servizio di query interattivo che ti aiuta ad analizzare i dati direttamente in Amazon Simple Storage Service (Amazon S3) utilizzando SQL standard.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)è un framework di sviluppo software che ti aiuta a definire e fornire l' Cloud AWS infrastruttura in codice.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ti aiuta a configurare AWS le risorse, a fornirle in modo rapido e coerente e a gestirle durante tutto il loro ciclo di vita tra Account AWS e. Regioni AWS
+ [Amazon DataZone](https://docs.aws.amazon.com/datazone/latest/userguide/what-is-datazone.html) è un servizio di gestione dei dati che ti aiuta a catalogare, scoprire, condividere e gestire i dati archiviati su AWS, in sede e in fonti di terze parti.
+ [Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) è un servizio di business intelligence (BI) su scala cloud che ti aiuta a visualizzare, analizzare e generare report sui dati in un'unica dashboard.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) è un servizio di machine learning (ML) gestito che ti aiuta a creare e addestrare modelli di machine learning per poi distribuirli in un ambiente ospitato pronto per la produzione.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
+ [Amazon Simple Queue Service (Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)) fornisce una coda ospitata sicura, durevole e disponibile che ti aiuta a integrare e disaccoppiare sistemi e componenti software distribuiti.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

**Repository di codice**

La soluzione è disponibile nel repository GitHub [data-mesh-datazone-cdk-cloudformation](https://github.com/aws-samples/data-mesh-datazone-cdk-cloudformation).

## Epiche
<a name="build-enterprise-data-mesh-amazon-data-zone-epics"></a>

### Configura l'ambiente
<a name="set-up-the-environment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Clonare il repository. | Per clonare il repository, esegui il seguente comando nel tuo ambiente di sviluppo locale (Linux o macOS):<pre>git clone https://github.com/aws-samples/data-mesh-datazone-cdk-cloudformation</pre> | Architetto del cloud, ingegnere DevOps  | 
| Creazione dell'ambiente | Per creare l'ambiente virtuale Python, esegui i seguenti comandi:<pre> python3 -m venv .venv<br /> source .venv/bin/activate<br /> pip install -r requirements.txt</pre> | Architetto del cloud, DevOps ingegnere | 
| Avvia l'account. | Per avviare l'account di governance centrale utilizzando AWS CDK, esegui il seguente comando:<pre>cdk bootstrap aws://<GOVERNANCE_ACCOUNT_ID>/<AWS_REGION></pre>Accedi a Console di gestione AWS, apri la console dell'account di governance centrale e ottieni l'Amazon Resource Name (ARN) del ruolo di AWS CDK esecuzione. | Architetto del cloud, DevOps ingegnere | 
| Costruisci il `DzDataMeshMemberStackSet.yaml` file. | Per costruire il `DzDataMeshMemberStackSet.yaml` file, dalla directory principale del repository, iniziate il seguente script bash:<pre>./lib/scripts/create_dz_data_mesh_member_stack_set.sh</pre> | Architetto del cloud, ingegnere DevOps  | 
| Conferma la creazione del modello. | Assicuratevi che il file CloudFormation modello sia stato creato nella `lib/cfn-templates/DzDataMeshMemberStackSet.yaml` posizione desiderata. | Architetto del cloud, DevOps ingegnere | 

### Implementa le risorse nell'account di governance centrale
<a name="deploy-resources-in-the-central-governance-account"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Modifica la configurazione. | Nel `config/Config.ts` file, modificate i seguenti parametri:<pre>DZ_APPLICATION_NAME - Name of the application.<br />DZ_STAGE_NAME - Name of the stage. <br />DZ_DOMAIN_NAME - Name of the Amazon DataZone domain<br />DZ_DOMAIN_DESCRIPTION - Description of the Amazon DataZone domain<br />DZ_DOMAIN_TAG - Tag of the Amazon DataZone domain<br />DZ_ADMIN_PROJECT_NAME - Name of the Amazon DataZone project for administrators<br />DZ_ADMIN_PROJECT_DESCRIPTION - Description of the Amazon DataZone project for administrators<br />CDK_EXEC_ROLE_ARN - ARN of the cdk execution role<br />DZ_ADMIN_ROLE_ARN - ARN of the administrator role</pre>Mantieni vuoti i parametri rimanenti. | Architetto del cloud, DevOps ingegnere | 
| Aggiorna la configurazione del DataZone glossario Amazon. | Per aggiornare la configurazione del DataZone glossario Amazon nel `lib/utils/glossary_config.json` file, usa la seguente configurazione di esempio:<pre>{<br />    "GlossaryName": "PII Data",<br />    "GlossaryDescription": "If data source contains PII attributes",<br />    "GlossaryTerms": [{<br />            "Name": "Yes",<br />            "ShortDescription": "Yes",<br />            "LongDescription": "Yes Glossary Term"<br />        },<br />        {<br />            "Name": "No",<br />            "ShortDescription": "No",<br />            "LongDescription": "No Glossary Term"<br />        }<br />    ]<br />}</pre> | Architetto del cloud, DevOps ingegnere | 
| Aggiorna la configurazione del modulo di DataZone metadati Amazon. | Per aggiornare la configurazione del modulo di DataZone metadati Amazon in`lib/utils/metadata_form_config.json file`, utilizza la seguente configurazione di esempio:<pre>{<br />    "FormName": "ScheduleDataRefresh",<br />    "FormDescription": "Form for data refresh schedule",<br />    "FormSmithyModel": "@amazon.datazone#displayname(defaultName: \"Data Refresh Schedule\")\nstructure ScheduleDataRefresh {\n    @documentation(\"Schedule of Data Refresh\")\n    @required\n    @amazon.datazone#searchable\n    @amazon.datazone#displayname(defaultName: \"Data Refresh Schedule\")\n    data_refresh_schedule: String\n}"<br />}</pre> | Architetto del cloud, DevOps ingegnere | 
| Esporta le AWS credenziali. | Per esportare AWS le credenziali nel tuo ambiente di sviluppo per il ruolo IAM con autorizzazioni amministrative, utilizza il seguente formato:<pre>export AWS_ACCESS_KEY_ID=<br />export AWS_SECRET_ACCESS_KEY=<br />export AWS_SESSION_TOKEN=</pre> | Architetto del cloud, ingegnere DevOps  | 
| Sintetizza il modello. | Per sintetizzare il CloudFormation modello, esegui il seguente comando:<pre>npx cdk synth</pre> | Architetto del cloud, ingegnere DevOps  | 
| Distribuire la soluzione. | Per distribuire la soluzione, esegui il comando seguente:<pre>npx cdk deploy --all</pre> | Architetto del cloud, DevOps ingegnere | 

### Configura nuovi account per i membri
<a name="configure-new-member-accounts"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Implementa il modello. | Distribuisci il CloudFormation modello che si trova `lib/cfn-templates/DzDataMeshCfnStackSetExecutionRole.yaml` nell'account del membro con i seguenti parametri di input: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Architetto del cloud, ingegnere DevOps  | 
| Aggiorna il ARNs. | Per aggiornare l'elenco dei ruoli di CloudFormation StackSet esecuzione ARNs per gli account membri, utilizza il codice seguente:<pre>DZ_MEMBER_STACK_SET_EXEC_ROLE_LIST  - List of Stack set execution role arns for the member accounts.</pre> | Architetto del cloud, DevOps ingegnere | 
| Sintetizza e distribuisci. | Per sintetizzare il CloudFormation modello e distribuire la soluzione, esegui i seguenti comandi:<pre>npx cdk synth<br />npx cdk deploy --all</pre> | Architetto del cloud, ingegnere DevOps  | 
| Associa l'account membro. | Per associare l'account membro all'account di governance centrale, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Architetto del cloud, ingegnere DevOps  | 
| Aggiorna i parametri. | Per aggiornare i parametri specifici dell'account membro nel file di configurazione in`config/Config.ts`, utilizza il seguente formato:<pre>export const DZ_MEMBER_ACCOUNT_CONFIG: memberAccountConfig = {<br />  '123456789012' : {<br />    PROJECT_NAME: 'TEST-PROJECT-123456789012',<br />    PROJECT_DESCRIPTION: 'TEST-PROJECT-123456789012',<br />    PROJECT_EMAIL: 'user@xyz.com'<br />  }<br />}</pre> | Architetto del cloud, ingegnere DevOps  | 
| Sintetizza e implementa il modello. | Per sintetizzare il CloudFormation modello e distribuire la soluzione, esegui i comandi seguenti:<pre>npx cdk synth<br />npx cdk deploy --all</pre> | Architetto del cloud, ingegnere DevOps  | 
| Aggiungi account per i membri. | Per creare e configurare account membro aggiuntivi nella soluzione dati, ripeti i passaggi precedenti per ogni account membro.Questa soluzione non fa distinzione tra produttori di dati e consumatori. | Architetto del cloud, DevOps ingegnere | 

### Eliminazione
<a name="clean-up"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Dissocia gli account dei membri. | Per dissociare gli account, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Architetto del cloud, DevOps ingegnere | 
| Elimina le istanze dello stack. | Per eliminare le istanze dello CloudFormation stack, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Architetto del cloud, DevOps ingegnere | 
| Distruggi tutte le risorse. | Per distruggere le risorse, implementa i seguenti passaggi nel tuo ambiente di sviluppo locale (Linux o macOS):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Architetto del cloud, DevOps ingegnere | 

## Risorse correlate
<a name="build-enterprise-data-mesh-amazon-data-zone-resources"></a>
+ [Amazon DataZone quickstart con i dati AWS Glue](https://docs.aws.amazon.com/datazone/latest/userguide/quickstart-glue.html)
+ [Tutorial: crea la tua prima app AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/hello_world.html)
+ [Iniziare con CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html)
+ [Strategie per creare una soluzione aziendale basata su data mesh su AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-data-mesh/introduction.html)

## Informazioni aggiuntive
<a name="build-enterprise-data-mesh-amazon-data-zone-additional"></a>

**Obiettivi**

L'implementazione di questo modello consente di ottenere quanto segue:
+ **Proprietà decentralizzata dei dati** ‒ Trasferisci la proprietà dei dati da un team centrale ai team che rappresentano i sistemi di origine, le unità aziendali o i casi d'uso dell'organizzazione.
+ **Pensiero di prodotto** ‒ Introduci una mentalità basata sul prodotto che includa i clienti, il mercato e altri fattori quando consideri le risorse di dati della tua organizzazione.
+ **Governance federata** ‒ Migliora le barriere di sicurezza, i controlli e la conformità tra i prodotti di dati dell'organizzazione.
+ Supporto per **più account e più progetti ‒ Supporta** la condivisione e la collaborazione dei dati efficienti e sicure tra le unità aziendali o i progetti dell'organizzazione.
+ **Monitoraggio e notifiche centralizzati** ‒ Monitora le risorse cloud della tua mesh di dati utilizzando Amazon CloudWatch e avvisa gli utenti quando viene associato un nuovo account membro.
+ **Scalabilità ed estensibilità** ‒ Aggiungi nuovi casi d'uso alla data mesh man mano che la tua organizzazione si evolve.

**Ambito della soluzione**

Quando utilizzi questa soluzione, puoi iniziare con dimensioni ridotte e scalare man mano che avanzi nel percorso verso la rete di dati. Spesso, quando un account membro adotta la soluzione dati, contiene configurazioni di account specifiche per l'organizzazione, il progetto o l'unità aziendale. Questa soluzione si adatta a queste diverse Account AWS configurazioni supportando le seguenti funzionalità:
+ AWS Glue Data Catalog come fonte di dati per Amazon DataZone
+ Gestione del dominio DataZone dati Amazon e del relativo portale dati
+ Gestione dell'aggiunta di account membri nella soluzione di dati basata su data mesh
+ Gestione di DataZone progetti e ambienti Amazon
+ Gestione di DataZone glossari e moduli di metadati Amazon
+ Gestione dei ruoli IAM che corrispondono agli utenti della soluzione di dati basata su data mesh
+ Notifica agli utenti di soluzioni di dati basate su data mesh
+ Monitoraggio dell'infrastruttura cloud predisposta

  Questa soluzione utilizza AWS CDK e CloudFormation implementa l'infrastruttura cloud. Viene utilizzata CloudFormation per eseguire le seguenti operazioni:
  + Definisci e distribuisci le risorse cloud a un livello di astrazione inferiore.
  + Implementa risorse cloud da. Console di gestione AWS Utilizzando questo approccio, è possibile implementare l'infrastruttura senza un ambiente di sviluppo.

  La soluzione data mesh consente di definire le risorse AWS CDK a un livello di astrazione più elevato. Di conseguenza, la soluzione fornisce un approccio disaccoppiato, modulare e scalabile scegliendo lo strumento pertinente per implementare le risorse cloud.

**Fasi successive**

Puoi rivolgerti agli AWS[esperti](https://aws.amazon.com/professional-services) per ricevere indicazioni su come creare una rete di dati con Amazon DataZone.

La natura modulare di questa soluzione supporta la creazione di soluzioni di gestione dei dati con diverse architetture, come data fabric e data lake. Inoltre, in base ai requisiti della tua organizzazione, puoi estendere la soluzione ad altre fonti di DataZone dati Amazon.

# Calcola il valore a rischio (VaR) utilizzando i servizi AWS
<a name="calculate-value-at-risk-var-by-using-aws-services"></a>

*Sumon Samanta, Amazon Web Services*

## Riepilogo
<a name="calculate-value-at-risk-var-by-using-aws-services-summary"></a>

Questo modello descrive come implementare un sistema di calcolo del valore a rischio (VaR) utilizzando i servizi AWS. In un ambiente locale, la maggior parte dei sistemi VaR utilizza un'ampia infrastruttura dedicata e un software di pianificazione della rete interno o commerciale per eseguire processi in batch. Questo modello presenta un'architettura semplice, affidabile e scalabile per gestire l'elaborazione VaR nel cloud AWS. Crea un'architettura serverless che utilizza Amazon Kinesis Data Streams come servizio di streaming, Amazon Simple Queue Service (Amazon SQS) come servizio di coda gestito, Amazon come servizio di cache e AWS Lambda per elaborare ElastiCache gli ordini e calcolare il rischio.

Il VaR è una misura statistica che i trader e i gestori del rischio utilizzano per stimare le potenziali perdite nel loro portafoglio oltre un certo livello di confidenza. La maggior parte dei sistemi VaR prevede l'esecuzione di un gran numero di calcoli matematici e statistici e l'archiviazione dei risultati. Questi calcoli richiedono risorse di calcolo significative, quindi i processi batch VaR devono essere suddivisi in set più piccoli di attività di calcolo. La suddivisione di un batch di grandi dimensioni in attività più piccole è possibile perché queste attività sono per lo più indipendenti (ovvero, i calcoli per un'attività non dipendono da altre attività). 

Un altro requisito importante per un'architettura VaR è la scalabilità di calcolo. Questo modello utilizza un'architettura serverless che si ridimensiona automaticamente in avanti o indietro in base al carico di calcolo. Poiché la domanda di elaborazione in batch o online è difficile da prevedere, è necessaria la scalabilità dinamica per completare il processo entro la tempistica imposta da un accordo sul livello di servizio (SLA). Inoltre, un'architettura ottimizzata in termini di costi dovrebbe essere in grado di ridimensionare ogni risorsa di elaborazione non appena le attività su tale risorsa sono complete. 

I servizi AWS sono adatti per i calcoli VaR perché offrono capacità di calcolo e storage scalabile, servizi di analisi per l'elaborazione in modo ottimizzato in termini di costi e diversi tipi di scheduler per eseguire i flussi di lavoro di gestione del rischio. Inoltre, paghi solo per le risorse di calcolo e storage che usi su AWS.

## Prerequisiti e limitazioni
<a name="calculate-value-at-risk-var-by-using-aws-services-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo.
+ File di input, che dipendono dai requisiti aziendali. Un tipico caso d'uso riguarda i seguenti file di input:
  + File di dati di mercato (input nel motore di calcolo del VaR)
  + File di dati commerciali (a meno che i dati commerciali non arrivino attraverso un flusso).
  + File di dati di configurazione (modello e altri dati di configurazione statici)
  + File di modello del motore di calcolo (librerie quantitative)
  + File di dati delle serie temporali (per dati storici come il prezzo delle azioni degli ultimi cinque anni)
+ Se i dati di mercato o altri input arrivano tramite un flusso, vengono configurate le autorizzazioni di Amazon Kinesis Data Streams e Amazon Identity and Access Management (IAM) configurate per scrivere nello stream.  

Questo modello crea un'architettura in cui i dati commerciali vengono scritti da un sistema di trading a un flusso di dati Kinesis. Invece di utilizzare un servizio di streaming, puoi salvare i dati commerciali in piccoli file batch, archiviarli in un bucket Amazon Simple Storage Service (Amazon S3) e richiamare un evento per avviare l'elaborazione dei dati.

**Limitazioni**
+ Il sequenziamento del flusso di dati Kinesis è garantito su ogni shard, pertanto non è garantito che gli ordini commerciali scritti su più shard vengano consegnati nello stesso ordine delle operazioni di scrittura.
+ Il limite di runtime di AWS Lambda è attualmente di 15 minuti. (Per ulteriori informazioni, consulta le [domande frequenti su Lambda)](https://aws.amazon.com/lambda/faqs/).

## Architecture
<a name="calculate-value-at-risk-var-by-using-aws-services-architecture"></a>

**Architettura Target**

Il seguente diagramma di architettura mostra i servizi e i flussi di lavoro AWS per il sistema di valutazione del rischio.

![\[Sistema di calcolo VaR con servizi AWS\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/eb615fc5-3cc3-445a-af2c-8446ee7b5276/images/c60aec03-ff6c-410c-8ee8-f1f6efa22cf7.png)


Il diagramma illustra quanto segue:

1. Le negoziazioni arrivano dal sistema di gestione degli ordini.

1. La funzione Lambda *di ticket position netting* elabora gli ordini e scrive messaggi consolidati per ogni ticker in una coda di rischio in Amazon SQS.

1. La funzione Lambda *del motore di calcolo del rischio* elabora i messaggi di Amazon SQS, esegue calcoli del rischio e aggiorna le informazioni su profitti e perdite (PnL) del VaR nella cache dei rischi di Amazon. ElastiCache

1. La funzione Lambda di *lettura ElastiCache dei dati* recupera i risultati del rischio e li archivia in un database ElastiCache e in un bucket S3.

*Per ulteriori informazioni su questi servizi e passaggi, consulta la sezione Epics.*

**Automazione e scalabilità**

Puoi distribuire l'intera architettura utilizzando l'AWS Cloud Development Kit (AWS CDK) o i modelli CloudFormation AWS. L'architettura può supportare sia l'elaborazione in batch che l'elaborazione intraday (in tempo reale).

La scalabilità è integrata nell'architettura. Man mano che sempre più operazioni vengono scritte nel flusso di dati di Kinesis e sono in attesa di essere elaborate, è possibile richiamare funzioni Lambda aggiuntive per elaborare tali operazioni e ridurle al termine dell'elaborazione. Un'altra opzione è l'elaborazione tramite più code di calcolo del rischio di Amazon SQS. Se è richiesto un ordinamento o un consolidamento rigorosi tra le code, l'elaborazione non può essere parallelizzata. Tuttavia, per un end-of-the-day batch o un mini batch intraday, le funzioni Lambda possono elaborare in parallelo e memorizzare i risultati finali in. ElastiCache 

## Tools (Strumenti)
<a name="calculate-value-at-risk-var-by-using-aws-services-tools"></a>

**Servizi AWS**
+ [Amazon Aurora MySQL Compatible Edition è un motore di database relazionale completamente gestito e compatibile](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.html) con MySQL che ti aiuta a configurare, gestire e scalare le distribuzioni MySQL. Questo modello utilizza MySQL come esempio, ma è possibile utilizzare qualsiasi sistema RDBMS per archiviare i dati.
+ [Amazon](https://docs.aws.amazon.com/elasticache/) ti ElastiCache aiuta a configurare, gestire e scalare ambienti di cache in memoria distribuiti nel cloud AWS.
+ [Amazon Kinesis Data](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) Streams ti aiuta a raccogliere ed elaborare grandi flussi di record di dati in tempo reale.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di elaborazione che ti aiuta a eseguire codice senza dover fornire o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di calcolo che utilizzi.
+ [Amazon Simple Queue Service (Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)) fornisce una coda ospitata sicura, durevole e disponibile che ti aiuta a integrare e disaccoppiare sistemi e componenti software distribuiti.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

**Codice**

Questo modello fornisce un'architettura di esempio per un sistema VaR nel cloud AWS e descrive come utilizzare le funzioni Lambda per i calcoli del VaR. [Per creare le tue funzioni Lambda, consulta gli esempi di codice nella documentazione di Lambda.](https://docs.aws.amazon.com/lambda/latest/dg/service_code_examples.html) Per assistenza, contatta [AWS Professional Services](https://pages.awscloud.com/AWS-Professional-Services.html).

## Best practice
<a name="calculate-value-at-risk-var-by-using-aws-services-best-practices"></a>
+ Mantieni ogni attività di calcolo VaR il più piccola e leggera possibile. Sperimenta un numero diverso di operazioni in ciascuna attività di calcolo per vedere quale è la più ottimizzata in termini di tempi e costi di calcolo.
+ Archivia oggetti riutilizzabili in Amazon ElastiCache. Usa un framework come Apache Arrow per ridurre la serializzazione e la deserializzazione.
+ Considera la limitazione temporale di Lambda. Se ritieni che le tue attività di elaborazione possano superare i 15 minuti, prova a suddividerle in attività più piccole per evitare il timeout Lambda. Se ciò non è possibile, potresti prendere in considerazione una soluzione di orchestrazione dei container con AWS Fargate, Amazon Elastic Container Service (Amazon ECS) e Amazon Elastic Kubernetes Service (Amazon EKS).

## Epiche
<a name="calculate-value-at-risk-var-by-using-aws-services-epics"></a>

### Sistema dal flusso commerciale al rischio
<a name="trade-flow-to-risk-system"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Inizia a scrivere scambi.  | Le negoziazioni nuove, liquidate o parzialmente regolate vengono registrate dal sistema di gestione degli ordini in un flusso di rischio. Questo modello utilizza Amazon Kinesis come servizio di streaming gestito. L'hash del trade order ticker viene utilizzato per inserire gli ordini commerciali su più frammenti. | Amazon Kinesis | 

### Esegui le funzioni Lambda per l'elaborazione degli ordini
<a name="run-lambda-functions-for-order-processing"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Inizia l'elaborazione del rischio con Lambda. | Esegui una funzione AWS Lambda per i nuovi ordini. In base al numero di ordini commerciali in sospeso, Lambda si ridimensionerà automaticamente. Ogni istanza Lambda ha uno o più ordini e recupera la posizione più recente per ogni ticker da Amazon. ElastiCache (Puoi utilizzare un ID CUSIP, un nome Curve o un nome di indice per altri prodotti finanziari derivati come chiave per archiviare e recuperare dati.) ElasticCache In ElastiCache, la posizione totale (quantità) e la coppia chiave-valore < *ticker*, *net position >, dove la posizione netta* è il fattore di scala, vengono *aggiornate* una volta per ogni ticker.  | Amazon Kinesis, AWS Lambda, Amazon ElastiCache | 

### Scrivi messaggi per ogni ticker in coda
<a name="write-messages-for-each-ticker-into-queue"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Scrivi messaggi consolidati nella coda di rischio. | Scrivi il messaggio in una coda. Questo modello utilizza Amazon SQS come servizio di coda gestito. Una singola istanza Lambda può ricevere un mini batch di ordini commerciali in qualsiasi momento, ma scriverà solo un messaggio per ogni ticker su Amazon SQS. *Viene calcolato un fattore di scala: (*vecchia posizione netta\$1posizione* *attuale)/vecchia posizione* netta.* | Amazon SQS, AWS Lambda | 

### Richiama il motore di rischio
<a name="invoke-risk-engine"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Avvia i calcoli del rischio. | Viene richiamata la funzione Lambda per il risk engine lambda. Ogni posizione viene elaborata da una singola funzione Lambda. Tuttavia, a fini di ottimizzazione, ogni funzione Lambda può elaborare più messaggi da Amazon SQS. | Amazon SQS, AWS Lambda | 

### Recupera i risultati del rischio dalla cache
<a name="retrieve-risk-results-from-cache"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Recupera e aggiorna la cache dei rischi. | Lambda recupera la posizione netta corrente per ogni ticker da. ElastiCache Inoltre, recupera un array di profitti e perdite (PnL) VaR per ogni ticker da. ElastiCache Se l'array PnL esiste già, la funzione Lambda aggiorna l'array e il vAR con una scala, che proviene dal messaggio Amazon SQS scritto dalla funzione netting Lambda. Se l'array PnL non è presente ElasticCache, vengono calcolati nuovi PnL e VaR utilizzando dati simulati sulla serie di prezzi dei ticker. | Amazon SQS, AWS Lambda, Amazon ElastiCache | 

### Aggiorna i dati in Elastic Cache e archivia nel database
<a name="update-data-in-elastic-cache-and-store-in-database"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Memorizza i risultati dei rischi. | Dopo l'aggiornamento dei numeri VaR e PnL ElastiCache, viene richiamata una nuova funzione Lambda ogni cinque minuti. Questa funzione legge tutti i dati memorizzati ElastiCache e li archivia in un database Aurora compatibile con MySQL e in un bucket S3. | AWS Lambda, Amazon ElastiCache | 

## Risorse correlate
<a name="calculate-value-at-risk-var-by-using-aws-services-resources"></a>
+ [Struttura di Basilea VaR](https://www.bis.org/basel_framework/chapter/DIS/50.htm)

# Configura l'accesso tra account a un catalogo di dati AWS Glue condiviso utilizzando Amazon Athena
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena"></a>

*Denis Avdonin, Amazon Web Services*

## Riepilogo
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-summary"></a>

Questo modello fornisce step-by-step istruzioni, inclusi esempi di policy di AWS Identity and Access Management (IAM), per configurare la condivisione tra account di un set di dati archiviato in un bucket Amazon Simple Storage Service (Amazon S3) utilizzando AWS Glue Data Catalog. Puoi archiviare il set di dati in un bucket S3. I metadati vengono raccolti da un crawler di AWS Glue e inseriti nel catalogo dati di AWS Glue. *Il bucket S3 e il catalogo dati AWS Glue risiedono in un account AWS denominato account dati.* Puoi fornire l'accesso ai principali IAM in un altro account AWS denominato *account consumer*. Gli utenti possono interrogare i dati nell'account consumer utilizzando il motore di query serverless di Amazon Athena.

## Prerequisiti e limitazioni
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-prereqs"></a>

**Prerequisiti**
+ Due [account AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html) attivi
+ Un [bucket S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) in uno degli account AWS
+ [Motore Athena versione 2](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference.html#engine-versions-reference-0002)
+ AWS Command Line Interface (AWS CLI)[,](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) installata [e](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) configurata (o [AWS](https://aws.amazon.com/cloudshell/) per l'esecuzione di comandi CloudShell AWS CLI)

**Versioni del prodotto**

Questo modello funziona solo con il motore [Athena versione 2 e il motore](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference-0002.html) [Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference-0003.html) versione 3. Ti consigliamo di eseguire l'aggiornamento alla versione 3 del motore Athena. Se non riesci a eseguire l'upgrade dalla versione 1 del motore Athena alla versione 3 del motore Athena, segui l'approccio descritto in Accesso multiaccount ad [AWS Glue Data Catalog con Amazon Athena](https://aws.amazon.com/blogs/big-data/cross-account-aws-glue-data-catalog-access-with-amazon-athena/) nel blog di AWS Big Data.

## Architecture
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-architecture"></a>

**Stack tecnologico Target**
+ Amazon Athena
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Glue
+ AWS Identity and Access Management (IAM)
+ AWS Key Management Service (AWS KMS)

Il diagramma seguente mostra un'architettura che utilizza le autorizzazioni IAM per condividere i dati in un bucket S3 in un account AWS (account dati) con un altro account AWS (account consumer) tramite AWS Glue Data Catalog.

![\[Condivisione di un set di dati in un bucket S3 tra un account dati e un account consumer utilizzando AWS Glue Data Catalog.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/4ee1d6f5-f8e1-4acb-8a9c-7601c832a87d/images/e73a2b47-c0b1-49f1-be66-9c563c11c9f9.png)


Il diagramma mostra il flusso di lavoro seguente:

1. La policy S3 bucket nell'account dati concede le autorizzazioni a un ruolo IAM nell'account consumer e al ruolo del servizio crawler AWS Glue nell'account dati.

1. La policy chiave di AWS KMS nell'account dati concede le autorizzazioni al ruolo IAM nell'account consumer e al ruolo del servizio crawler AWS Glue nell'account dati.

1. Il crawler AWS Glue nell'account dati rileva lo schema dei dati archiviati nel bucket S3.

1. La policy sulle risorse di AWS Glue Data Catalog nell'account dati consente l'accesso al ruolo IAM nell'account consumer.

1. Un utente crea un riferimento di catalogo denominato nell'account consumer utilizzando un comando CLI AWS.

1. Una policy IAM garantisce a un ruolo IAM nell'account consumer l'accesso alle risorse dell'account di dati. La policy di fiducia del ruolo IAM consente agli utenti dell'account consumer di assumere il ruolo IAM.

1. Un utente dell'account consumer assume il ruolo IAM e accede agli oggetti nel catalogo dati utilizzando le query SQL.

1.  Il motore serverless Athena esegue le query SQL.

**Nota**  
[Le migliori pratiche IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) [consigliano di concedere le autorizzazioni a un ruolo IAM e di utilizzare la federazione delle identità.](https://aws.amazon.com/identity/federation/)

## Tools (Strumenti)
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-tools"></a>
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) è un servizio di query interattivo che ti aiuta ad analizzare i dati direttamente in Amazon S3 utilizzando SQL standard.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) è un servizio di estrazione, trasformazione e caricamento (ETL) completamente gestito. Ti aiuta a classificare, pulire, arricchire e spostare i dati in modo affidabile tra archivi di dati e flussi di dati.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue risorse AWS controllando chi è autenticato e autorizzato a utilizzarle.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ti aiuta a creare e controllare chiavi crittografiche per proteggere i tuoi dati.

## Epiche
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-epics"></a>

### Imposta le autorizzazioni nell'account dati
<a name="set-up-permissions-in-the-data-account"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Concedi l'accesso ai dati nel bucket S3. | [Crea una policy per i bucket S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) basata sul modello seguente e assegna la policy al bucket in cui sono archiviati i dati.<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Principal": {<br />                "AWS": [<br />                     "arn:aws:iam::<consumer account id>:role/<role name>",<br />                     "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler"<br />                ]<br />            },<br />            "Action": "s3:GetObject",<br />            "Resource": "arn:aws:s3:::data-bucket/*"<br />        },<br />        {<br />            "Effect": "Allow",<br />            "Principal": {<br />                "AWS": [<br />                      "arn:aws:iam::<consumer account id>:role/<role name>",<br />                      "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler"<br />                ]<br />            },<br />            "Action": "s3:ListBucket",<br />            "Resource": "arn:aws:s3:::data-bucket"<br />        }<br />    ]<br />}</pre>La bucket policy concede le autorizzazioni al ruolo IAM nell'account consumer e al ruolo del servizio crawler AWS Glue nell'account dati. | Amministratore del cloud | 
| (Se richiesto) Concedi l'accesso alla chiave di crittografia dei dati. | Se il bucket S3 è crittografato da una chiave AWS KMS, `kms:Decrypt` concedi l'autorizzazione sulla chiave al ruolo IAM nell'account consumer e al ruolo del servizio crawler AWS Glue nell'account dati.Aggiorna la [policy chiave con la seguente dichiarazione](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html):<pre>{<br />    "Effect": "Allow",<br />    "Principal": {<br />        "AWS": [<br />            "arn:aws:iam::<consumer account id>:role/<role name>",<br />            "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler"<br />        ]<br />    },<br />    "Action": "kms:Decrypt",<br />    "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>"<br />}</pre> | Amministratore cloud | 
| Concedi al crawler l'accesso ai dati. | Allega la seguente policy IAM al ruolo di servizio del crawler:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": "s3:GetObject",<br />            "Resource": "arn:aws:s3:::data-bucket/*"<br />        },<br />        {<br />            "Effect": "Allow",<br />            "Action": "s3:ListBucket",<br />            "Resource": "arn:aws:s3:::data-bucket"<br />        }<br />    ]<br />} </pre> | Amministratore cloud | 
| (Se richiesto) Concedi al crawler l'accesso alla chiave di crittografia dei dati. | Se il bucket S3 è crittografato da una chiave AWS KMS, `kms:Decrypt` concedi l'autorizzazione sulla chiave per il ruolo di servizio del crawler allegando la seguente policy:<pre>{<br />    "Effect": "Allow",<br />    "Action": "kms:Decrypt",<br />    "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>"<br />}</pre> | Amministratore del cloud | 
| Concedi al ruolo IAM nell'account consumer e al crawler l'accesso al catalogo dati. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena.html)<pre>{<br />    "Version" : "2012-10-17",<br />    "Statement" : [ <br />        {<br />            "Effect" : "Allow",<br />            "Principal" : {<br />                "AWS" : [<br />                     "arn:aws:iam::<consumer account id>:role/<role name>",<br />                    "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler"<br />                ]<br />            },<br />            "Action" : "glue:*",<br />            "Resource" : [ <br />                 "arn:aws:glue:<region>:<data account id>:catalog", <br />                 "arn:aws:glue:<region>:<data account id>:database/*", <br />                 "arn:aws:glue:<region>:<data account id>:table/*" <br />            ]<br />        } <br />    ]<br />}</pre>Questa policy consente tutte le azioni di AWS Glue su tutti i database e le tabelle nell'account dati. Puoi personalizzare la policy per concedere solo le autorizzazioni necessarie ai responsabili dei consumatori. Ad esempio, è possibile fornire l'accesso in sola lettura a tabelle o viste specifiche in un database. | Amministratore cloud | 

### Accedi ai dati dall'account del consumatore
<a name="access-data-from-the-consumer-account"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un riferimento denominato per il catalogo dati. | Per creare un riferimento denominato al catalogo di dati, usa [CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/getting-started.html)una CLI AWS installata localmente per eseguire il seguente comando:<pre>aws athena create-data-catalog --name <shared catalog name> --type GLUE --parameters catalog-id=<data account id></pre> | Amministratore del cloud | 
| Concedi al ruolo IAM nell'account consumer l'accesso ai dati. | Allega la seguente policy al ruolo IAM nell'account consumer per concedere al ruolo l'accesso ai dati tra account diversi:<pre>{<br />     "Version": "2012-10-17",		 	 	 <br />     "Statement": [<br />        {<br />             "Effect": "Allow",<br />             "Action": "s3:GetObject",<br />             "Resource": "arn:aws:s3:::data-bucket/*"<br />        },<br />        {<br />             "Effect": "Allow",<br />             "Action": "s3:ListBucket",<br />             "Resource": "arn:aws:s3:::data-bucket"<br />        },<br />        {<br />            "Effect": "Allow",<br />            "Action": "glue:*",<br />            "Resource": [<br />                 "arn:aws:glue:<region>:<data account id>:catalog",<br />                 "arn:aws:glue:<region>:<data account id>:database/*",<br />                 "arn:aws:glue:<region>:<data account id>:table/*"<br />            ]<br />        }<br />    ]<br />}</pre>Successivamente, utilizza il seguente modello per specificare quali utenti possono accettare il ruolo IAM nella relativa policy di fiducia:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />       {<br />            "Effect": "Allow",<br />            "Principal": {<br />                "AWS": "arn:aws:iam::<consumer account id>:user/<IAM user>"<br />            },<br />            "Action": "sts:AssumeRole"<br />        }<br />    ]<br />}</pre>Infine, concedi agli utenti i permessi per assumere il ruolo IAM associando la stessa policy al gruppo di utenti a cui appartengono. | Amministratore cloud | 
| (Se richiesto) Concedi al ruolo IAM nell'account consumer l'accesso alla chiave di crittografia dei dati. | Se il bucket S3 è crittografato da una chiave AWS KMS, `kms:Decrypt` concedi l'autorizzazione sulla chiave al ruolo IAM nell'account consumer allegando la seguente policy:<pre>{<br />     "Effect": "Allow",<br />     "Action": "kms:Decrypt",<br />     "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>"<br />}</pre> | Amministratore del cloud | 
| Passa al ruolo IAM nell'account consumer per accedere ai dati. | In qualità di consumatore di dati, [passa al ruolo IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) per accedere ai dati nell'account dati. | Consumatore di dati | 
| Accedi ai dati. | Interroga i dati usando Athena. Ad esempio, apri l'editor di query Athena ed esegui la seguente query:<pre>SELECT *<br />  FROM <shared catalog name>.<database name>.<table name></pre>Invece di utilizzare un riferimento denominato al catalogo, puoi fare riferimento al catalogo anche tramite il relativo Amazon Resource Name (ARN).Se utilizzi un riferimento dinamico al catalogo in una query o in una vista, racchiudi il riferimento tra virgolette doppie con escape (\$1»). Esempio:<pre>SELECT * <br />  FROM \"glue:arn:aws:glue:<region>:<data account id>:catalog\".<database name>.<table name></pre>Per ulteriori informazioni, consulta [Accesso da più account ai cataloghi di dati di AWS Glue nella Guida](https://docs.aws.amazon.com/athena/latest/ug/security-iam-cross-account-glue-catalog-access.html) per l'utente di Amazon Athena. | Consumatore di dati | 

## Risorse correlate
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-resources"></a>
+ [Accesso da più account ai cataloghi di dati di AWS Glue (documentazione](https://docs.aws.amazon.com/athena/latest/ug/security-iam-cross-account-glue-catalog-access.html) Athena)
+ [(AWS CLI) (riferimento ai comandi dell'interfaccia a riga di create-data-catalog comando AWS)](https://docs.aws.amazon.com/cli/latest/reference/athena/create-data-catalog.html)
+ [Accesso a AWS Glue Data Catalog su più account con Amazon Athena](https://aws.amazon.com/blogs/big-data/cross-account-aws-glue-data-catalog-access-with-amazon-athena/) (AWS Big Data Blog)
+ [Best practice di sicurezza in IAM (documentazione IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html))

## Informazioni aggiuntive
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-additional"></a>

**Utilizzo di Lake Formation come alternativa per la condivisione tra account**

Puoi anche utilizzare AWS Lake Formation per condividere l'accesso agli oggetti del catalogo AWS Glue tra gli account. Lake Formation offre un controllo granulare degli accessi a livello di colonna e riga, controllo degli accessi basato su tag, tabelle governate per le transazioni ACID e altre funzionalità. Sebbene Lake Formation sia ben integrato con Athena, richiede una configurazione aggiuntiva rispetto all'approccio basato esclusivamente sull'IAM di questo modello. Ti consigliamo di prendere in considerazione la decisione di utilizzare i controlli di accesso solo per Lake Formation o IAM nel contesto più ampio dell'architettura complessiva della tua soluzione. Le considerazioni includono quali altri servizi sono coinvolti e come si integrano con entrambi gli approcci.

# Convertire la funzionalità temporale Teradata NORMALIZE in Amazon Redshift SQL
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql"></a>

*Po Hong, Amazon Web Services*

## Riepilogo
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-summary"></a>

**NORMALIZE** è un'estensione Teradata dello standard ANSI SQL. Quando una tabella SQL include una colonna con un tipo di dati **PERIOD**, **NORMALIZE** combina i valori che corrispondono o si sovrappongono in quella colonna, per formare un unico periodo che consolida più valori di periodo individuali. **Per utilizzare **NORMALIZE**, almeno una colonna nell'elenco SQL **SELECT** deve essere del tipo di dati TEMPORAL PERIOD di Teradata.** [Per ulteriori informazioni su **NORMALIZE**, vedere la documentazione di Teradata.](https://docs.teradata.com/reader/2_MC9vCtAJRlKle2Rpb0mA/MIGI5UMEwgERC3Un7tEZ6g) 

Amazon Redshift non supporta **NORMALIZE**, ma puoi implementare questa funzionalità utilizzando la sintassi SQL nativa e la funzione finestra **LAG** in Amazon Redshift. Questo modello si concentra sull'utilizzo dell'estensione Teradata **NORMALIZE** con la condizione **ON MEETS OR OVERLAPS**, che è il formato più popolare. Spiega come funziona questa funzionalità in Teradata e come può essere convertita nella sintassi SQL nativa di Amazon Redshift.

## Prerequisiti e limitazioni
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-prereqs"></a>

**Prerequisiti**
+ Conoscenza ed esperienza di base di Teradata SQL
+ Conoscenza ed esperienza in Amazon Redshift

## Architecture
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-architecture"></a>

**Stack tecnologico di origine**
+ Data warehouse Teradata

**Stack tecnologico Target**
+ Amazon Redshift

**Architettura di destinazione**

Per un'architettura di alto livello per la migrazione di un database Teradata ad Amazon Redshift, consulta lo schema [Migrare un database Teradata su Amazon Redshift utilizzando gli agenti di estrazione dati AWS SCT](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-a-teradata-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.html). La migrazione non converte automaticamente la frase Teradata **NORMALIZE** in Amazon Redshift SQL. Puoi convertire questa estensione Teradata seguendo le linee guida riportate in questo schema.

## Tools (Strumenti)
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-tools"></a>

**Codice**

Per illustrare il concetto e la funzionalità di **NORMALIZE**, si consideri la seguente definizione di tabella in Teradata:

```
CREATE TABLE systest.project
     (    emp_id        INTEGER,
          project_name  VARCHAR(20),
          dept_id       INTEGER,
          duration      PERIOD(DATE)
     );
```

Eseguite il seguente codice SQL per inserire dati di esempio nella tabella:

```
BEGIN TRANSACTION;

INSERT INTO systest.project VALUES (10, 'First Phase', 1000,  PERIOD(DATE '2010-01-10', DATE '2010-03-20') );
INSERT INTO systest.project VALUES (10, 'First Phase', 2000,  PERIOD(DATE '2010-03-20', DATE '2010-07-15') );

INSERT INTO systest.project VALUES (10, 'Second Phase', 2000,  PERIOD(DATE '2010-06-15', DATE '2010-08-18') );
INSERT INTO systest.project VALUES (20, 'First Phase', 2000,  PERIOD(DATE '2010-03-10', DATE '2010-07-20') );

INSERT INTO systest.project VALUES (20, 'Second Phase', 1000,  PERIOD(DATE '2020-05-10', DATE '2020-09-20') );

END TRANSACTION;
```

Risultati:

```
select * from systest.project order by 1,2,3;
 
 *** Query completed. 4 rows found. 4 columns returned.
 *** Total elapsed time was 1 second.
 
     emp_id  project_name              dept_id  duration
-----------  --------------------  -----------  ------------------------
         10  First Phase                  1000  ('10/01/10', '10/03/20')        
         10  First Phase                  2000  ('10/03/20', '10/07/15')
         10  Second Phase                 2000  ('10/06/15', '10/08/18')
         20  First Phase                  2000  ('10/03/10', '10/07/20')
         20  Second Phase                 1000  ('20/05/10', '20/09/20')
```

*Caso d'uso Teradata NORMALIZE*

**Ora aggiungi la clausola Teradata **NORMALIZE** SQL all'istruzione SELECT:**

```
SELECT NORMALIZE ON MEETS OR OVERLAPS emp_id, duration 
FROM systest.project 
ORDER BY 1,2;
```

Questa operazione **NORMALIZE** viene eseguita su una singola colonna (). `emp_id` Infatti`emp_id=10`, i tre valori di periodo sovrapposti in termini di durata si fondono in un unico valore di periodo, come segue:  

```
     emp_id  duration
-----------  ------------------------
         10  ('10/01/10', '10/08/18')
         20  ('10/03/10', '10/07/20')
         20  ('20/05/10', '20/09/20')
```

La seguente istruzione **SELECT** esegue un'operazione **NORMALIZE** su e. `project_name` `dept_id` Si noti che l'elenco **SELECT** contiene solo una colonna **PERIOD**,`duration`.

```
SELECT NORMALIZE project_name, dept_id, duration 
FROM systest.project;
```

Output:

```
project_name              dept_id  duration
--------------------  -----------  ------------------------
First Phase                  1000  ('10/01/10', '10/03/20')
Second Phase                 1000  ('20/05/10', '20/09/20')
First Phase                  2000  ('10/03/10', '10/07/20')
Second Phase                 2000  ('10/06/15', '10/08/18')
```

*SQL equivalente ad Amazon Redshift*

Amazon Redshift attualmente non supporta il tipo di dati **PERIOD** in una tabella. È invece necessario dividere un campo di dati TERADATA **PERIOD** in due parti:`start_date, end_date`, come segue:  

```
CREATE TABLE systest.project
     (    emp_id        INTEGER,
          project_name  VARCHAR(20),
          dept_id       INTEGER,
          start_date  DATE,
          end_date    DATE
     );
```

Inserire dati di esempio nella tabella:

```
BEGIN TRANSACTION;
 
INSERT INTO systest.project VALUES (10, 'First Phase', 1000,  DATE '2010-01-10', DATE '2010-03-20' );
INSERT INTO systest.project VALUES (10, 'First Phase', 2000,  DATE '2010-03-20', DATE '2010-07-15');
 
INSERT INTO systest.project VALUES (10, 'Second Phase', 2000,  DATE '2010-06-15', DATE '2010-08-18' );
INSERT INTO systest.project VALUES (20, 'First Phase', 2000,  DATE '2010-03-10', DATE '2010-07-20' );
 
INSERT INTO systest.project VALUES (20, 'Second Phase', 1000,  DATE '2020-05-10', DATE '2020-09-20' );
 
END TRANSACTION;
```

Output:

```
 emp_id | project_name | dept_id | start_date |  end_date
--------+--------------+---------+------------+------------
     10 | First Phase  |    1000 | 2010-01-10 | 2010-03-20
     10 | First Phase  |    2000 | 2010-03-20 | 2010-07-15
     10 | Second Phase |    2000 | 2010-06-15 | 2010-08-18
     20 | First Phase  |    2000 | 2010-03-10 | 2010-07-20
     20 | Second Phase |    1000 | 2020-05-10 | 2020-09-20
(5 rows)
```

Per riscrivere la clausola **NORMALIZE** di Teradata, puoi utilizzare la [funzione LAG](https://docs.aws.amazon.com/redshift/latest/dg/r_WF_LAG.html) window in Amazon Redshift. Questa funzione restituisce i valori di una riga con un determinato offset al di sopra (prima) della riga corrente nella partizione.

È possibile utilizzare la funzione **LAG** per identificare ogni riga che inizia un nuovo periodo determinando se un periodo corrisponde o si sovrappone al periodo precedente (0 se sì e 1 se no). Quando questo flag viene sommato cumulativamente, fornisce un identificatore di gruppo che può essere utilizzato nella clausola **Group By** esterna per ottenere il risultato desiderato in Amazon Redshift.  

Ecco un esempio di istruzione SQL di Amazon Redshift che utilizza **LAG** ():

```
SELECT emp_id, start_date, end_date, 
            (CASE WHEN start_date <= LAG(end_date) OVER (PARTITION BY emp_id ORDER BY start_date, end_date) THEN 0 ELSE 1 END) AS GroupStartFlag
FROM systest.project 
ORDER BY 1,2;
```

Output:

```
 emp_id | start_date |  end_date  | groupstartflag
--------+------------+------------+----------------
     10 | 2010-01-10 | 2010-03-20 |              1
     10 | 2010-03-20 | 2010-07-15 |              0
     10 | 2010-06-15 | 2010-08-18 |              0
     20 | 2010-03-10 | 2010-07-20 |              1
     20 | 2020-05-10 | 2020-09-20 |              1
(5 rows)
```

La seguente istruzione SQL di Amazon Redshift si normalizza solo sulla colonna: `emp_id`

```
SELECT T2.emp_id, MIN(T2.start_date) as new_start_date, MAX(T2.end_date) as new_end_date
FROM 
( SELECT T1.*, SUM(GroupStartFlag) OVER (PARTITION BY emp_id ORDER BY start_date ROWS UNBOUNDED PRECEDING) As GroupID
FROM ( SELECT emp_id, start_date, end_date, 
            (CASE WHEN start_date <= LAG(end_date) OVER (PARTITION BY emp_id ORDER BY start_date, end_date) THEN 0 ELSE 1 END) AS GroupStartFlag
FROM systest.project ) T1
) T2
GROUP BY T2.emp_id, T2.GroupID
ORDER BY 1,2;
```

Output:  

```
 emp_id | new_start_date | new_end_date
--------+----------------+------------------------------------
     10 | 2010-01-10     | 2010-08-18
     20 | 2010-03-10     | 2010-07-20
     20 | 2020-05-10     | 2020-09-20
(3 rows)
```

** **

La seguente istruzione SQL di Amazon Redshift si normalizza su entrambe le `project_name` colonne e: `dept_id`

```
SELECT T2.project_name, T2.dept_id, MIN(T2.start_date) as new_start_date, MAX(T2.end_date) as new_end_date
FROM 
( SELECT T1.*, SUM(GroupStartFlag) OVER (PARTITION BY project_name, dept_id ORDER BY start_date ROWS UNBOUNDED PRECEDING) As GroupID
FROM ( SELECT project_name, dept_id, start_date, end_date, 
            (CASE WHEN start_date <= LAG(end_date) OVER (PARTITION BY project_name, dept_id ORDER BY start_date, end_date) THEN 0 ELSE 1 END) AS GroupStartFlag
FROM systest.project ) T1
) T2
GROUP BY T2.project_name, T2.dept_id, T2.GroupID
ORDER BY 1,2,3;
```

Output:

```
 project_name | dept_id | new_start_date | new_end_date
--------------+---------+----------------+--------------
 First Phase  |    1000 | 2010-01-10     | 2010-03-20
 First Phase  |    2000 | 2010-03-10     | 2010-07-20
 Second Phase |    1000 | 2020-05-10     | 2020-09-20
 Second Phase |    2000 | 2010-06-15     | 2010-08-18
(4 rows)
```

## Epiche
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-epics"></a>

### Convertire NORMALIZE in Amazon Redshift SQL
<a name="convert-normalize-to-amazon-redshift-sql"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea il tuo codice Teradata SQL. | Usa la frase NORMALIZE in base alle tue esigenze. | SQL Developer | 
| Converti il codice in Amazon Redshift SQL. | Per convertire il codice, segui le linee guida nella sezione «Strumenti» di questo modello. | SQL Developer | 
| Esegui il codice in Amazon Redshift. | Crea la tua tabella, carica i dati nella tabella ed esegui il codice in Amazon Redshift. | SQL Developer | 

## Risorse correlate
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-resources"></a>

**Riferimenti**
+ Funzione [temporale Teradata NORMALIZE (documentazione Teradata)](https://docs.teradata.com/reader/2_MC9vCtAJRlKle2Rpb0mA/MIGI5UMEwgERC3Un7tEZ6g)
+ [Funzione finestra LAG](https://docs.aws.amazon.com/redshift/latest/dg/r_WF_LAG.html) (documentazione Amazon Redshift)
+ Esegui [la migrazione ad Amazon Redshift](https://aws.amazon.com/redshift/data-warehouse-migration/) (sito web AWS)
+ Esegui la [migrazione di un database Teradata su Amazon Redshift utilizzando agenti di estrazione dati AWS SCT (AWS Prescriptive Guidance](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-a-teradata-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.html))
+ [Conversione della funzionalità Teradata RESET WHEN in Amazon Redshift](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/convert-the-teradata-reset-when-feature-to-amazon-redshift-sql.html) SQL (AWS Prescriptive Guidance)

**Strumenti**
+ [Strumento di conversione dello schema AWS (AWS SCT)](https://aws.amazon.com/dms/schema-conversion-tool/)

**Partner**
+ [Partner AWS con competenze per la migrazione](https://aws.amazon.com/migration/partner-solutions/#delivery)

# Convertire la funzionalità Teradata RESET WHEN in Amazon Redshift SQL
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql"></a>

*Po Hong, Amazon Web Services*

## Riepilogo
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-summary"></a>

**RESET WHEN** è una funzionalità di Teradata utilizzata nelle funzioni analitiche delle finestre SQL. È un'estensione dello standard ANSI SQL. **RESET** WHEN determina la partizione su cui opera una funzione di finestra SQL in base a una condizione specificata. Se la condizione restituisce **TRUE**, viene creata una nuova sottopartizione dinamica all'interno della partizione di finestra esistente. [Per ulteriori informazioni su **RESET WHEN, consultate la documentazione** di Teradata.](https://docs.teradata.com/reader/1DcoER_KpnGTfgPinRAFUw/b7wL86OoMTPno6hrSPNdDg)

Amazon Redshift non supporta **RESET WHEN nelle funzioni** delle finestre SQL. Per implementare questa funzionalità, devi convertire **RESET WHEN** nella sintassi SQL nativa in Amazon Redshift e utilizzare più funzioni annidate. Questo modello dimostra come utilizzare la funzionalità Teradata **RESET WHEN** e come convertirla nella sintassi SQL di Amazon Redshift. 

## Prerequisiti e limitazioni
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-prereqs"></a>

**Prerequisiti**
+ Conoscenza di base del data warehouse Teradata e della sua sintassi SQL
+ Buona conoscenza di Amazon Redshift e della sua sintassi SQL

## Architecture
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-architecture"></a>

**Stack tecnologico di origine**
+ Data warehouse Teradata

**Stack tecnologico Target**
+ Amazon Redshift

**Architettura**

Per un'architettura di alto livello per la migrazione di un database Teradata ad Amazon Redshift, consulta lo schema [Migrare un database Teradata su Amazon Redshift utilizzando gli agenti di estrazione dati AWS SCT](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-a-teradata-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.html). La migrazione non converte automaticamente la frase Teradata **RESET WHEN** in Amazon Redshift SQL. Puoi convertire questa estensione Teradata seguendo le linee guida nella sezione successiva.

## Tools (Strumenti)
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-tools"></a>

**Codice**

Per illustrare il concetto di **RESET WHEN, si** consideri la seguente definizione di tabella in Teradata:

```
create table systest.f_account_balance                                
( account_id integer NOT NULL,
  month_id integer,
  balance integer )
unique primary index (account_id, month_id);
```

Esegui il seguente codice SQL per inserire dati di esempio nella tabella:

```
BEGIN TRANSACTION;
Insert Into systest.f_account_balance values (1,1,60);
Insert Into systest.f_account_balance values (1,2,99);
Insert Into systest.f_account_balance values (1,3,94);
Insert Into systest.f_account_balance values (1,4,90);
Insert Into systest.f_account_balance values (1,5,80);
Insert Into systest.f_account_balance values (1,6,88);
Insert Into systest.f_account_balance values (1,7,90);
Insert Into systest.f_account_balance values (1,8,92);
Insert Into systest.f_account_balance values (1,9,10);
Insert Into systest.f_account_balance values (1,10,60);
Insert Into systest.f_account_balance values (1,11,80);
Insert Into systest.f_account_balance values (1,12,10);
END TRANSACTION;
```

La tabella di esempio contiene i seguenti dati:


| 
| 
| account\$1id | month\$1id | balance | 
| --- |--- |--- |
| 1 | 1 | 60 | 
| 1 | 2 | 99 | 
| 1 | 3 | 94 | 
| 1 | 4 | 90 | 
| 1 | 5 | 80 | 
| 1 | 6 | 88 | 
| 1 | 7 | 90 | 
| 1 | 8 | 92 | 
| 1 | 9 | 10 | 
| 1 | 10 | 60 | 
| 1 | 11 | 80 | 
| 1 | 12 | 10 | 

Per ogni account, supponiamo che tu voglia analizzare la sequenza di aumenti mensili consecutivi del saldo. Quando il saldo di un mese è inferiore o uguale al saldo del mese precedente, è necessario azzerare il contatore e riavviare il sistema.

*Caso d'uso Teradata RESET WHEN*

Per analizzare questi dati, Teradata SQL utilizza una funzione finestra con un aggregato annidato e una frase **RESET** WHEN, come segue:

```
SELECT account_id, month_id, balance,
 ( ROW_NUMBER() OVER (PARTITION BY account_id ORDER BY month_id
RESET WHEN balance <= SUM(balance) over (PARTITION BY account_id ORDER BY month_id ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) ) -1 ) as balance_increase
FROM systest.f_account_balance
ORDER BY 1,2;
```

Output:


| 
| 
|  account\$1id | id\$1mese | balance | balance\$1increase | 
| --- |--- |--- |--- |
| 1 | 1 | 60 | 0 | 
| 1 | 2 | 99 | 1 | 
| 1 | 3 | 94 | 0 | 
| 1 | 4 | 90 | 0 | 
| 1 | 5 | 80 | 0 | 
| 1 | 6 | 88 | 1 | 
| 1 | 7 | 90 | 2 | 
| 1 | 8 | 92 | 3 | 
| 1 | 9 | 10 | 0 | 
| 1 | 10 | 60 | 1 | 
| 1 | 11 | 80 | 2 | 
| 1 | 12 | 10 | 0 | 

La query viene elaborata come segue in Teradata:

1. La funzione di aggregazione **SUM (saldo)** calcola la somma di tutti i saldi di un determinato conto in un determinato mese.

1. Controlliamo se un saldo in un determinato mese (per un determinato account) è maggiore del saldo del mese precedente.

1. Se il saldo aumenta, tracciamo un valore di conteggio cumulativo. Se la condizione **RESET** WHEN risulta **falsa**, il che significa che il saldo è aumentato nei mesi successivi, continuiamo ad aumentare il conteggio.

1. La funzione analitica ordinata **ROW\$1NUMBER ()** calcola il valore del conteggio. **Quando raggiungiamo un mese il cui saldo è inferiore o uguale al saldo del mese precedente, la condizione **RESET WHEN** risulta vera.** In tal caso, iniziamo una nuova partizione e **ROW\$1NUMBER ()** riavvia il conteggio da 1. Utilizziamo **ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING** per accedere al valore della riga precedente.

1. Sottraiamo 1 per assicurarci che il valore del conteggio inizi con 0.

*SQL equivalente ad Amazon Redshift*

Amazon Redshift non supporta la frase **RESET** WHEN in una funzione di finestra analitica SQL.  Per ottenere lo stesso risultato, è necessario riscrivere Teradata SQL utilizzando la sintassi SQL nativa di Amazon Redshift e sottoquery annidate, come segue: 

```
SELECT account_id, month_id, balance,
   (ROW_NUMBER() OVER(PARTITION BY account_id, new_dynamic_part ORDER BY month_id) -1) as balance_increase
FROM
( SELECT account_id, month_id, balance, prev_balance,
SUM(dynamic_part) OVER (PARTITION BY account_id ORDER BY month_id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) As new_dynamic_part
FROM ( SELECT account_id, month_id, balance,
SUM(balance) over (PARTITION BY account_id ORDER BY month_id ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) as prev_balance,
(CASE When balance <= prev_balance Then 1 Else 0 END) as dynamic_part
FROM systest.f_account_balance ) A
) B
ORDER BY 1,2;
```

Poiché Amazon Redshift non supporta le funzioni di finestra annidata nella clausola **SELECT** di una singola istruzione SQL, è necessario utilizzare due sottoquery annidate.
+ **Nella sottoquery interna (alias A), viene creato e popolato un indicatore di partizione dinamica (dynamic\$1part).** **dynamic\$1part** è impostato su 1 se il saldo di un mese è inferiore o uguale al saldo del mese precedente; in caso contrario, è impostato su 0. 
+ **Nel livello successivo (alias B), viene generato un attributo **new\$1dynamic\$1part** come risultato di una funzione della finestra SUM.** 
+ **Infine, aggiungete **new\$1dynamic\$1part** come nuovo attributo di partizione (partizione **dinamica**) all'attributo di partizione esistente (**account\$1id) e applicate la stessa funzione di finestra ROW\$1NUMBER** () di Teradata (e meno una).** 

Dopo queste modifiche, Amazon Redshift SQL genera lo stesso output di Teradata.

## Epiche
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-epics"></a>

### Converti RESET WHEN in Amazon Redshift SQL
<a name="convert-reset-when-to-amazon-redshift-sql"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea la tua funzione di finestra Teradata. | Usa gli aggregati annidati e la frase RESET WHEN in base alle tue esigenze. | SQL Developer | 
| Converti il codice in Amazon Redshift SQL. | Per convertire il codice, segui le linee guida nella sezione «Strumenti» di questo modello. | SQL Developer | 
| Esegui il codice in Amazon Redshift. | Crea la tua tabella, carica i dati nella tabella ed esegui il codice in Amazon Redshift. | SQL Developer | 

## Risorse correlate
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-resources"></a>

**Riferimenti**
+ [RESET WHEN Phrase](https://docs.teradata.com/reader/1DcoER_KpnGTfgPinRAFUw/b7wL86OoMTPno6hrSPNdDg) (documentazione Teradata)
+ [Spiegazione RESET WHEN](https://stackoverflow.com/questions/53344536/teradata-reset-when-partition-by-order-by) (Stack Overflow)
+ Esegui [la migrazione ad Amazon Redshift](https://aws.amazon.com/redshift/data-warehouse-migration/) (sito web AWS)
+ Esegui la [migrazione di un database Teradata su Amazon Redshift utilizzando agenti di estrazione dati AWS SCT (AWS Prescriptive Guidance](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-a-teradata-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.html))
+ [Conversione della funzionalità temporale Teradata NORMALIZE in Amazon Redshift SQL (AWS Prescriptive Guidance](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql.html))

**Strumenti**
+ [Strumento di conversione dello schema AWS (AWS SCT)](https://aws.amazon.com/dms/schema-conversion-tool/)

**Partner**
+ [Partner AWS con competenze per la migrazione](https://aws.amazon.com/migration/partner-solutions/#delivery)

# 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/)

# Applica l'etichettatura dei cluster Amazon EMR al momento del lancio
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch"></a>

*Priyanka Chaudhary, Amazon Web Services*

## Riepilogo
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-summary"></a>

Questo modello fornisce un controllo di sicurezza che garantisce che i cluster Amazon EMR siano etichettati al momento della creazione. 

Amazon EMR è un servizio Amazon Web Services (AWS) per l'elaborazione e l'analisi di grandi quantità di dati. Amazon EMR offre un servizio espandibile e a bassa configurazione come alternativa più semplice all'esecuzione interna del cluster computing. Puoi utilizzare i tag per classificare le risorse AWS in diversi modi, ad esempio per scopo, proprietario o ambiente. Ad esempio, puoi etichettare i tuoi cluster Amazon EMR assegnando metadati personalizzati a ciascun cluster. Un tag è composto da una chiave e da un valore definiti dall'utente. Ti consigliamo di creare un set coerente di tag per soddisfare i requisiti della tua organizzazione. Quando aggiungi un tag a un cluster Amazon EMR, il tag viene anche propagato a ogni istanza attiva di Amazon Elastic Compute Cloud (Amazon EC2) associata al cluster. Allo stesso modo, quando rimuovi un tag da un cluster Amazon EMR, tale tag viene rimosso anche da ogni EC2 istanza attiva associata.

Il controllo investigativo monitora le chiamate API e avvia un evento Amazon CloudWatch Events per [RunJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html), [AddTags[RemoveTags](https://docs.aws.amazon.com/emr/latest/APIReference/API_RemoveTags.html)](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddTags.html), e. [CreateTags](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html) APIs L'evento chiama AWS Lambda, che esegue uno script Python. La funzione Python ottiene l'ID del cluster Amazon EMR dall'input JSON dell'evento ed esegue i seguenti controlli:
+ Verifica se il cluster Amazon EMR è configurato con i nomi di tag che hai specificato.
+ In caso contrario, invia una notifica Amazon Simple Notification Service (Amazon SNS) all'utente con le informazioni pertinenti: il nome del cluster Amazon EMR, i dettagli della violazione, la regione AWS, l'account AWS e Amazon Resource Name (ARN) per Lambda da cui proviene questa notifica.

## Prerequisiti e limitazioni
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo
+ Un bucket Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) per caricare il codice Lambda fornito. *In alternativa, puoi creare un bucket S3 per questo scopo, come descritto nella sezione Epics.*
+ Un indirizzo email attivo a cui desideri ricevere notifiche di violazione.
+ Un elenco di tag obbligatori che desideri controllare.

**Limitazioni**
+ Questo controllo di sicurezza è regionale. Devi distribuirlo in ogni regione AWS che desideri monitorare.

**Versioni del prodotto**
+ Amazon EMR versione 4.8.0 e successive.

## Architecture
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-architecture"></a>

**Architettura del workflow**

![\[Avvio del cluster, utilizzo del monitoraggio APIs, generazione di eventi, chiamata alla funzione Lambda, notifica inviata.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/1a4fc0f8-b0c9-4391-9c79-9eb3898d6ecb/images/0d95c414-69d1-4f29-a9e7-09f202e27014.png)


**Automazione e scalabilità**
+ Se utilizzi [AWS Organizations](https://aws.amazon.com/organizations/), puoi utilizzare [AWS Cloudformation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) per distribuire questo modello in più account che desideri monitorare.

## Tools (Strumenti)
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-tools"></a>

**Servizi AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html): AWS ti CloudFormation aiuta a modellare e configurare le tue risorse AWS, effettuarne il provisioning in modo rapido e coerente e gestirle per tutto il loro ciclo di vita. Puoi utilizzare un modello per descrivere le tue risorse e le loro dipendenze e lanciarle e configurarle insieme come uno stack, invece di gestire le risorse singolarmente. Puoi gestire e fornire stack su più account AWS e regioni AWS.
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) - Amazon CloudWatch Events offre un flusso quasi in tempo reale di eventi di sistema che descrivono i cambiamenti nelle risorse AWS.
+ [Amazon EMR - Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) è un servizio web che semplifica l'esecuzione di framework di big data e l'elaborazione di grandi quantità di dati in modo efficiente. 
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html): AWS Lambda è un servizio di elaborazione che 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/userguide/Welcome.html) Storage Service (Amazon S3) è un servizio di storage di oggetti. È possibile utilizzare Amazon S3 per memorizzare e recuperare qualsiasi volume di dati, in qualunque momento e da qualunque luogo tramite il Web.
+ [Amazon SNS — Amazon Simple](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) Notification Service (Amazon SNS) coordina e gestisce la consegna o l'invio di messaggi tra editori e clienti, inclusi server Web e indirizzi e-mail. I sottoscrittori ricevono tutti gli stessi messaggi pubblicati sugli argomenti ai quali sono hanno effettuato la sottoscrizione.

**Codice**

Questo modello include i seguenti allegati:
+ `EMRTagValidation.zip`— Il codice Lambda per il controllo di sicurezza.
+ `EMRTagValidation.yml`— Il CloudFormation modello che configura l'evento e la funzione Lambda.

## Epiche
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-epics"></a>

### Configura il bucket S3
<a name="set-up-the-s3-bucket"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Definisci il bucket S3. | Sulla [console Amazon S3](https://console.aws.amazon.com/s3/), scegli o crea un bucket S3 per ospitare il file.zip con codice Lambda. Questo bucket S3 deve trovarsi nella stessa regione AWS del cluster Amazon EMR che desideri monitorare. Il nome di un bucket Amazon S3 è univoco a livello globale e lo spazio dei nomi è condiviso da tutti gli account AWS. Il nome del bucket S3 non può includere barre iniziali. | Architetto del cloud | 
| Carica il codice Lambda. | Carica il file.zip con codice Lambda fornito nella sezione *Allegati nel bucket* S3.                                               | Architetto del cloud | 

### Implementa il modello AWS CloudFormation
<a name="deploy-the-aws-cloudformation-template"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Avvia il CloudFormation modello AWS. | Apri la [ CloudFormation console AWS](https://console.aws.amazon.com/cloudformation/.) nella stessa regione AWS del bucket S3 e distribuisci il modello. Per ulteriori informazioni sulla distribuzione di CloudFormation modelli AWS, consulta [Creazione di uno stack sulla CloudFormation console AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) nella CloudFormation documentazione. | Architetto del cloud | 
| Completa i parametri nel modello. | Quando avvii il modello, ti verranno richieste le seguenti informazioni:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/enforce-tagging-of-amazon-emr-clusters-at-launch.html) | Architetto del cloud | 

### Confermare la sottoscrizione
<a name="confirm-the-subscription"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Confermare la sottoscrizione. | Quando il CloudFormation modello viene distribuito correttamente, invia un'e-mail di iscrizione all'indirizzo e-mail fornito. È necessario confermare questa sottoscrizione e-mail per iniziare a ricevere notifiche di violazione. | Architetto del cloud | 

## Risorse correlate
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-resources"></a>
+ [Guida per sviluppatori AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Etichettatura dei cluster in Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html)

## Allegati
<a name="attachments-1a4fc0f8-b0c9-4391-9c79-9eb3898d6ecb"></a>

[Per accedere a contenuti aggiuntivi associati a questo documento, decomprimi il seguente file: attachment.zip](samples/p-attach/1a4fc0f8-b0c9-4391-9c79-9eb3898d6ecb/attachments/attachment.zip)

# Assicurati che la registrazione di Amazon EMR su Amazon S3 sia abilitata al momento del lancio
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch"></a>

*Priyanka Chaudhary, Amazon Web Services*

## Riepilogo
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-summary"></a>

Questo modello fornisce un controllo di sicurezza che monitora la configurazione di registrazione per i cluster Amazon EMR in esecuzione su Amazon Web Services (AWS).

Amazon EMR è uno strumento AWS per l'elaborazione e l'analisi di big data. Amazon EMR offre il servizio espandibile a bassa configurazione come alternativa all'esecuzione interna del cluster computing. Amazon EMR offre due tipi di cluster EMR.
+ Cluster **Amazon EMR transitori: i cluster Amazon EMR transitori** si spengono automaticamente e smettono di incorrere in costi al termine dell'elaborazione.
+ Cluster **Amazon EMR persistenti: i cluster** Amazon EMR persistenti continuano a funzionare dopo il completamento del processo di elaborazione dei dati.

Amazon EMR e Hadoop producono entrambi file di log che comunicano lo stato sul cluster. **Per impostazione predefinita, questi vengono scritti nel nodo master nella directory//. mnt/var/log** A seconda di come configuri il cluster al momento dell'avvio, puoi anche salvare questi log su Amazon Simple Storage Service (Amazon S3) e visualizzarli tramite lo strumento grafico di debug. Tieni presente che la registrazione dei log di Amazon S3 può essere specificata solo all'avvio del cluster. Con questa configurazione, i log vengono inviati dal nodo primario alla posizione Amazon S3 ogni 5 minuti. Per i cluster transitori, la registrazione di Amazon S3 è importante perché i cluster scompaiono al termine dell'elaborazione e questi file di registro possono essere utilizzati per eseguire il debug di eventuali lavori non riusciti.

Il modello utilizza un CloudFormation modello AWS per implementare un controllo di sicurezza che monitora le chiamate API e avvia Amazon CloudWatch Events su "»RunJobFlow. Il trigger richiama AWS Lambda, che esegue uno script Python. La funzione Lambda recupera l'ID del cluster EMR dall'input JSON dell'evento e verifica anche la presenza di un URI di log di Amazon S3. Se non viene trovato un URI Amazon S3, la funzione Lambda invia una notifica Amazon Simple Notification Service (Amazon SNS) con i dettagli del nome del cluster EMR, i dettagli della violazione, la regione AWS, l'account AWS e il nome Lambda Amazon Resource Name (ARN) da cui proviene la notifica.

## Prerequisiti e limitazioni
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo
+ Un bucket S3 per il file.zip del codice Lambda
+ Un indirizzo e-mail a cui desideri ricevere la notifica di violazione

**Limitazioni**
+ Questo controllo investigativo è regionale e deve essere distribuito nelle regioni AWS che intendi monitorare.

**Versioni del prodotto**
+ Amazon EMR versione 4.8.0 e successive

## Architecture
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-architecture"></a>

**Stack tecnologico Target**
+ Evento Amazon CloudWatch Events
+ Amazon EMR
+ funzione Lambda
+ Bucket S3
+ Amazon SNS

**Architettura Target**

![\[Flusso di lavoro per garantire che la registrazione di Amazon EMR su Amazon S3 sia abilitata al momento del lancio.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/079af32e-0418-4bb2-bc20-c67ea5ac3b6e/images/3ba125cb-018a-4ace-838f-8c20992ecc20.png)


**Automazione e scalabilità**
+ Se utilizzi AWS Organizations, puoi utilizzare [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) per distribuire questo modello in più account che desideri monitorare.

## Tools (Strumenti)
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-tools"></a>

**Strumenti**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html): AWS ti CloudFormation aiuta a modellare e configurare le risorse AWS utilizzando l'infrastruttura come codice.
+ [AWS Cloudwatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html): AWS CloudWatch Events offre un flusso quasi in tempo reale di eventi di sistema che descrivono i cambiamenti nelle risorse AWS.
+ [Amazon EMR: Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) è una piattaforma di cluster gestita che semplifica l'esecuzione di framework di big data.
+ [AWS Lambda](https://aws.amazon.com/lambda/): AWS Lambda 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](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html) — Amazon S3 è un'interfaccia di servizi Web che puoi utilizzare per archiviare e recuperare qualsiasi quantità di dati da qualsiasi punto del Web.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html): Amazon SNS è un servizio Web che coordina e gestisce la consegna o l'invio di messaggi tra editori e clienti, inclusi server Web e indirizzi e-mail.

**Codice**
+ Un file.zip del progetto è disponibile come allegato.

## Epiche
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-epics"></a>

### Definisci il bucket S3
<a name="define-the-s3-bucket"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Definisci il bucket S3. | Per ospitare il file.zip con codice Lambda, scegli o crea un bucket S3 con un nome univoco che non contenga barre iniziali. Il nome di un bucket S3 è unico a livello globale e lo spazio dei nomi è condiviso da tutti gli account AWS. Il bucket S3 deve trovarsi nella stessa regione AWS del cluster Amazon EMR oggetto di valutazione. | Architetto del cloud | 

### Carica il codice Lambda nel bucket S3
<a name="upload-the-lambda-code-to-the-s3-bucket"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Carica il codice Lambda nel bucket S3. | Carica il file.zip con codice Lambda fornito nella sezione «Allegati» nel bucket S3. Il bucket S3 deve trovarsi nella stessa regione del cluster Amazon EMR in fase di valutazione. | Architetto del cloud | 

### Implementa il modello AWS CloudFormation
<a name="deploy-the-aws-cloudformation-template"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Implementa il CloudFormation modello AWS. | Sulla CloudFormation console AWS, nella stessa regione del bucket S3, distribuisci il CloudFormation modello AWS fornito come allegato a questo pattern. Nella prossima epopea, fornisci i valori per i parametri. Per ulteriori informazioni sulla distribuzione di CloudFormation modelli AWS, consulta la sezione «Risorse correlate». | Architetto del cloud | 

### Completa i parametri nel CloudFormation modello AWS
<a name="complete-the-parameters-in-the-aws-cloudformation-template"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Assegna un nome al bucket S3. | Inserisci il nome del bucket S3 che hai creato nella prima epic. | Architetto del cloud | 
| Fornisci la chiave Amazon S3. | <directory><file-name>Fornisci la posizione del file.zip del codice Lambda nel tuo bucket S3, senza barre iniziali (ad esempio, /.zip). | Architetto del cloud | 
| Fornisci un indirizzo email. | Fornisci un indirizzo e-mail attivo per ricevere le notifiche di Amazon SNS. | Architetto del cloud | 
| Definisci il livello di registrazione. | Definisci il livello e la frequenza di registrazione per la tua funzione Lambda. «Info» indica messaggi informativi dettagliati sullo stato di avanzamento dell'applicazione. «Errore» indica gli eventi di errore che potrebbero comunque consentire all'applicazione di continuare a funzionare. «Avviso» indica situazioni potenzialmente dannose. | Architetto del cloud | 

### Confermare la sottoscrizione
<a name="confirm-the-subscription"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Confermare la sottoscrizione. | Quando il modello viene distribuito correttamente, invia un messaggio e-mail di sottoscrizione all'indirizzo e-mail fornito. È necessario confermare questa sottoscrizione e-mail per ricevere le notifiche di violazione. | Architetto del cloud | 

## Risorse correlate
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-resources"></a>
+ [AWS Lambda](https://aws.amazon.com/lambda/)
+ [Registrazione di Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-debugging.html)
+ [Implementazione di modelli AWS CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)

## Allegati
<a name="attachments-079af32e-0418-4bb2-bc20-c67ea5ac3b6e"></a>

[Per accedere a contenuti aggiuntivi associati a questo documento, decomprimi il seguente file: attachment.zip](samples/p-attach/079af32e-0418-4bb2-bc20-c67ea5ac3b6e/attachments/attachment.zip)

# Genera dati di test utilizzando un job AWS Glue e Python
<a name="generate-test-data-using-an-aws-glue-job-and-python"></a>

*Moinul Al-Mamun, Amazon Web Services*

## Riepilogo
<a name="generate-test-data-using-an-aws-glue-job-and-python-summary"></a>

Questo modello mostra come generare in modo rapido e semplice milioni di file di esempio contemporaneamente creando un job AWS Glue scritto in Python. I file di esempio sono archiviati in un bucket Amazon Simple Storage Service (Amazon S3). La capacità di generare rapidamente un gran numero di file di esempio è importante per testare o valutare i servizi nel cloud AWS. Ad esempio, puoi testare le prestazioni dei DataBrew job AWS Glue Studio o AWS Glue eseguendo l'analisi dei dati su milioni di file di piccole dimensioni in un prefisso Amazon S3.

Sebbene sia possibile utilizzare altri servizi AWS per generare set di dati di esempio, consigliamo di utilizzare AWS Glue. Non è necessario gestire alcuna infrastruttura perché AWS Glue è un servizio di elaborazione dati senza server. Basta importare il codice ed eseguirlo in un cluster AWS Glue. Inoltre, AWS Glue fornisce, configura e ridimensiona le risorse necessarie per eseguire i tuoi lavori. Paghi solo per le risorse che le tue attività utilizzano durante l'esecuzione.

## Prerequisiti e limitazioni
<a name="generate-test-data-using-an-aws-glue-job-and-python-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo
+ AWS Command Line Interface (AWS CLI)[,](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) installata [e](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) configurata per funzionare con l'account AWS

**Versioni del prodotto**
+ Python 3.9
+ AWS CLI versione 2

**Limitazioni**

Il numero massimo di lavori AWS Glue per trigger è 50. Per ulteriori informazioni, consulta gli [endpoint e le quote di AWS Glue](https://docs.aws.amazon.com/general/latest/gr/glue.html).

## Architecture
<a name="generate-test-data-using-an-aws-glue-job-and-python-architecture"></a>

Il diagramma seguente mostra un'architettura di esempio incentrata su un job AWS Glue che scrive il suo output (ovvero file di esempio) in un bucket S3.

![\[Workflow mostra che la CLI di AWS avvia il job AWS Glue che scrive l'output nel bucket S3.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/f35943e8-3b2b-410e-a3f0-05e1ebd357d0/images/452ccbda-71f2-42b8-976d-bcc968bb1dab.png)


Il diagramma include il seguente flusso di lavoro:

1. Utilizzi l'AWS CLI, la Console di gestione AWS o un'API per avviare il job AWS Glue. L'API o la CLI di AWS consentono di automatizzare la parallelizzazione del job richiamato e di ridurre il tempo di esecuzione per la generazione di file di esempio.

1. Il job AWS Glue genera il contenuto dei file in modo casuale, lo converte in formato CSV e quindi lo archivia come oggetto Amazon S3 con un prefisso comune. Ogni file è inferiore a un kilobyte. Il job AWS Glue accetta due parametri di lavoro definiti dall'utente: `START_RANGE` e`END_RANGE`. È possibile utilizzare questi parametri per impostare i nomi dei file e il numero di file generati in Amazon S3 da ogni processo eseguito. È possibile eseguire più istanze di questo processo in parallelo (ad esempio, 100 istanze).

## Tools (Strumenti)
<a name="generate-test-data-using-an-aws-glue-job-and-python-tools"></a>
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
+ [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)) è uno strumento open source che ti aiuta a interagire con i servizi AWS tramite comandi nella tua shell a riga di comando.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) è un servizio di estrazione, trasformazione e caricamento (ETL) completamente gestito. Ti aiuta a classificare, pulire, arricchire e spostare i dati in modo affidabile tra archivi di dati e flussi di dati.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue risorse AWS controllando chi è autenticato e autorizzato a utilizzarle.

## Best practice
<a name="generate-test-data-using-an-aws-glue-job-and-python-best-practices"></a>

Prendi in considerazione le seguenti best practice di AWS Glue durante l'implementazione di questo modello:
+ **Usa il tipo di worker AWS Glue giusto per ridurre i costi.** Ti consigliamo di comprendere le diverse proprietà dei tipi di worker e quindi di scegliere il tipo di worker giusto per il tuo carico di lavoro in base ai requisiti di CPU e memoria. Per questo modello, si consiglia di utilizzare un job shell Python come tipo di lavoro per ridurre al minimo la DPU e ridurre i costi. Per ulteriori informazioni, consulta [Aggiungere lavori in AWS Glue nella AWS](https://docs.aws.amazon.com/glue/latest/dg/add-job.html) Glue Developer Guide.
+ **Usa il giusto limite di concorrenza per scalare il tuo lavoro.** Ti consigliamo di basare la massima contemporaneità del tuo lavoro AWS Glue sul tempo richiesto e sul numero di file richiesto.
+ **Inizia a generare un numero limitato di file all'inizio.** Per ridurre i costi e risparmiare tempo durante la creazione dei job AWS Glue, inizia con un numero limitato di file (ad esempio 1.000). Questo può semplificare la risoluzione dei problemi. Se la generazione di un numero ridotto di file ha esito positivo, è possibile passare a un numero maggiore di file.
+ **Esegui prima localmente.** Per ridurre i costi e risparmiare tempo nella creazione dei job AWS Glue, avvia lo sviluppo localmente e testa il codice. Per istruzioni sulla configurazione di un contenitore Docker che può aiutarti a scrivere lavori di estrazione, trasformazione e caricamento (ETL) di AWS Glue sia in una shell che in un ambiente di sviluppo integrato (IDE), consulta il post Developing AWS Glue [ETL Developing AWS Glue localmente usando un container](https://aws.amazon.com/blogs/big-data/developing-aws-glue-etl-jobs-locally-using-a-container/) sul blog di AWS Big Data.

Per ulteriori best practice di AWS Glue, consulta [Best practice](https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/best-practices.html) nella documentazione di AWS Glue.

## Epiche
<a name="generate-test-data-using-an-aws-glue-job-and-python-epics"></a>

### Crea un bucket S3 di destinazione e un ruolo IAM
<a name="create-a-destination-s3-bucket-and-iam-role"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un bucket S3 per archiviare i file. | [Crea un [bucket S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) e un prefisso al suo interno.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html)Questo modello utilizza la `s3://{your-s3-bucket-name}/small-files/` posizione a scopo dimostrativo. | Sviluppatore di app | 
| Crea e configura un ruolo IAM. | È necessario creare un ruolo IAM che il job AWS Glue possa utilizzare per scrivere nel bucket S3.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Sviluppatore di app | 

### Crea e configura un job AWS Glue per gestire esecuzioni simultanee
<a name="create-and-configure-an-aws-glue-job-to-handle-concurrent-runs"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un job AWS Glue. | Devi creare un job AWS Glue che generi i tuoi contenuti e li memorizzi in un bucket S3.Crea un [lavoro AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-jobs.html), quindi configura il tuo lavoro completando i seguenti passaggi:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Sviluppatore di app | 
| Aggiorna il codice del lavoro. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Sviluppatore di app | 

### Esegui il job AWS Glue dalla riga di comando o dalla console
<a name="run-the-aws-glue-job-from-the-command-line-or-console"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Esegui il job AWS Glue dalla riga di comando. | Per eseguire il tuo job AWS Glue dalla CLI di AWS, esegui il comando seguente utilizzando i tuoi valori:<pre>cmd:~$ aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"0","--END_RANGE":"1000000"}'<br />cmd:~$ aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1000000","--END_RANGE":"2000000"}'</pre>Per istruzioni sull'esecuzione del job AWS Glue dalla Console di gestione AWS, consulta la storia *Run the AWS Glue nella Console di gestione AWS* in questo modello.Ti consigliamo di utilizzare l'AWS CLI per eseguire i job AWS Glue se desideri eseguire più esecuzioni contemporaneamente con parametri diversi, come mostrato nell'esempio precedente.Per generare tutti i comandi AWS CLI necessari per generare un numero definito di file utilizzando un determinato fattore di parallelizzazione, esegui il seguente codice bash (utilizzando i tuoi valori):<pre># define parameters<br />NUMBER_OF_FILES=10000000;<br />PARALLELIZATION=50; <br /> <br /># initialize<br />_SB=0;<br />      <br /># generate commands<br />for i in $(seq 1 $PARALLELIZATION); <br />do <br />      echo aws glue start-job-run --job-name create_small_files --arguments "'"'{"--START_RANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION) * (i-1) + _SB))'","--END_RANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION) * (i)))'"}'"'";<br />      _SB=1; <br />done</pre>Se usi lo script precedente, considera quanto segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) Per vedere un esempio di output dello script precedente, vedete l'*output dello script Shell* nella sezione *Informazioni aggiuntive* di questo modello. | Sviluppatore di app | 
| Esegui il job AWS Glue nella Console di gestione AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Sviluppatore di app | 
| Verifica lo stato del tuo lavoro con AWS Glue. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Sviluppatore di app | 

## Risorse correlate
<a name="generate-test-data-using-an-aws-glue-job-and-python-resources"></a>

**Riferimenti**
+ [Registro dei dati aperti su AWS](https://registry.opendata.aws/)
+ [Set di dati per l'analisi](https://aws.amazon.com/marketplace/solutions/data-analytics/data-sets)
+ [Dati aperti su AWS](https://aws.amazon.com/opendata/)
+ [Aggiungere lavori in AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
+ [Guida introduttiva a AWS Glue](https://aws.amazon.com/glue/getting-started/)

**Guide e pattern**
+ [Le migliori pratiche di AWS Glue](https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/best-practices.html)
+ [Load testing applications](https://docs.aws.amazon.com/prescriptive-guidance/latest/load-testing/welcome.html)

## Informazioni aggiuntive
<a name="generate-test-data-using-an-aws-glue-job-and-python-additional"></a>

**Test di benchmarking**

Questo modello è stato utilizzato per generare 10 milioni di file utilizzando diversi parametri di parallelizzazione come parte di un test di benchmarking. La tabella seguente mostra i risultati del test:


| 
| 
| Parallelizzazione | Numero di file generati dall'esecuzione di un processo | Durata del lavoro | Velocità | 
| --- |--- |--- |--- |
| 10 | 1.000.000 | 6 ore, 40 minuti | Molto lento | 
| 50 | 200.000 | 80 minuti | Moderata | 
| 100 | 100.000 | 40 minuti | Veloce | 

Se desideri velocizzare il processo, puoi configurare più esecuzioni simultanee nella configurazione del processo. Puoi facilmente modificare la configurazione del lavoro in base ai tuoi requisiti, ma tieni presente che esiste un limite di quota del servizio AWS Glue. Per ulteriori informazioni, consulta gli [endpoint e le quote di AWS Glue](https://docs.aws.amazon.com/general/latest/gr/glue.html).

**Output dello script Shell**

L'esempio seguente mostra l'output dello script di shell dal *job Run the AWS Glue dalla riga di comando* in questo modello.

```
user@MUC-1234567890 MINGW64 ~
  $ # define parameters
  NUMBER_OF_FILES=10000000;
  PARALLELIZATION=50;
  # initialize
  _SB=0;
   
  # generate commands
  for i in $(seq 1 $PARALLELIZATION);
   do
         echo aws glue start-job-run --job-name create_small_files --arguments "'"'{"--START_RANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION)  (i-1) + SB))'","--ENDRANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION)  (i)))'"}'"'";
         _SB=1;
   done
   
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"0","--END_RANGE":"200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"200001","--END_RANGE":"400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"400001","--END_RANGE":"600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"600001","--END_RANGE":"800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"800001","--END_RANGE":"1000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1000001","--END_RANGE":"1200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1200001","--END_RANGE":"1400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1400001","--END_RANGE":"1600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1600001","--END_RANGE":"1800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1800001","--END_RANGE":"2000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2000001","--END_RANGE":"2200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2200001","--END_RANGE":"2400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2400001","--END_RANGE":"2600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2600001","--END_RANGE":"2800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2800001","--END_RANGE":"3000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3000001","--END_RANGE":"3200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3200001","--END_RANGE":"3400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3400001","--END_RANGE":"3600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3600001","--END_RANGE":"3800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3800001","--END_RANGE":"4000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4000001","--END_RANGE":"4200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4200001","--END_RANGE":"4400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4400001","--END_RANGE":"4600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4600001","--END_RANGE":"4800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4800001","--END_RANGE":"5000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5000001","--END_RANGE":"5200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5200001","--END_RANGE":"5400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5400001","--END_RANGE":"5600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5600001","--END_RANGE":"5800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5800001","--END_RANGE":"6000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6000001","--END_RANGE":"6200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6200001","--END_RANGE":"6400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6400001","--END_RANGE":"6600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6600001","--END_RANGE":"6800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6800001","--END_RANGE":"7000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7000001","--END_RANGE":"7200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7200001","--END_RANGE":"7400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7400001","--END_RANGE":"7600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7600001","--END_RANGE":"7800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7800001","--END_RANGE":"8000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8000001","--END_RANGE":"8200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8200001","--END_RANGE":"8400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8400001","--END_RANGE":"8600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8600001","--END_RANGE":"8800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8800001","--END_RANGE":"9000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9000001","--END_RANGE":"9200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9200001","--END_RANGE":"9400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9400001","--END_RANGE":"9600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9600001","--END_RANGE":"9800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9800001","--END_RANGE":"10000000"}'
  
  user@MUC-1234567890 MINGW64 ~
```

**DOMANDE FREQUENTI**

*Quante esecuzioni simultanee o job paralleli devo usare?*

Il numero di esecuzioni simultanee e di lavori paralleli dipende dal tempo richiesto e dal numero desiderato di file di test. Ti consigliamo di controllare la dimensione dei file che stai creando. Innanzitutto, controlla quanto tempo impiega un job AWS Glue per generare il numero di file desiderato. Quindi, usa il numero giusto di esecuzioni simultanee per raggiungere i tuoi obiettivi. Ad esempio, se presumi che 100.000 file impieghino 40 minuti per completare l'esecuzione ma il tempo previsto sia di 30 minuti, devi aumentare l'impostazione di concorrenza per il tuo job AWS Glue.

*Che tipo di contenuto posso creare utilizzando questo modello?*

È possibile creare qualsiasi tipo di contenuto, ad esempio file di testo con delimitatori diversi (ad esempio, PIPE, JSON o CSV). Questo modello utilizza Boto3 per scrivere su un file e quindi salva il file in un bucket S3.

*Di quale livello di autorizzazione IAM ho bisogno nel bucket S3?*

È necessario disporre di una policy basata sull'identità che consenta `Write` l'accesso agli oggetti nel bucket S3. Per ulteriori informazioni, consulta [Amazon S3: consente l'accesso in lettura e scrittura agli oggetti in un bucket S3](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_s3_rw-bucket.html) nella documentazione di Amazon S3.

# Inserimento conveniente di dati IoT direttamente in Amazon S3 con AWS IoT Greengrass
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass"></a>

*Sebastian Viviani e Rizwan Syed, Amazon Web Services*

## Riepilogo
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-summary"></a>

Questo modello mostra come importare in modo conveniente dati Internet of Things (IoT) direttamente in un bucket Amazon Simple Storage Service (Amazon S3) utilizzando un dispositivo AWS IoT Greengrass versione 2. Il dispositivo esegue un componente personalizzato che legge i dati IoT e li salva in una memoria persistente (ovvero un disco o un volume locale). Quindi, il dispositivo comprime i dati IoT in un file Apache Parquet e carica periodicamente i dati su un bucket S3.

La quantità e la velocità dei dati IoT che acquisisci sono limitate solo dalle funzionalità hardware perimetrali e dalla larghezza di banda della rete. Puoi usare Amazon Athena per analizzare in modo conveniente i dati acquisiti. [Athena supporta i file compressi di Apache Parquet e la visualizzazione dei dati utilizzando Amazon Managed Grafana.](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html)

## Prerequisiti e limitazioni
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo
+ Un [edge gateway](https://docs.aws.amazon.com/greengrass/v1/developerguide/quick-start.html) che funziona su [AWS IoT Greengrass versione 2](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-v2-whats-new.html) e raccoglie dati dai sensori (le fonti di dati e il processo di raccolta dei dati esulano dall'ambito di questo modello, ma è possibile utilizzare quasi tutti i tipi di dati dei sensori. Questo modello utilizza un broker [MQTT](https://mqtt.org/) locale con sensori o gateway che pubblicano dati localmente.)
+ [Componenti](https://docs.aws.amazon.com/greengrass/v2/developerguide/develop-greengrass-components.html)[, [ruoli](https://docs.aws.amazon.com/greengrass/v1/developerguide/service-role.html) e dipendenze SDK di AWS IoT Greengrass](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation)
+ Un [componente di gestione dello stream](https://docs.aws.amazon.com/greengrass/v2/developerguide/stream-manager-component.html) per caricare i dati nel bucket S3
+ [SDK AWS per](https://aws.amazon.com/sdk-for-java/) Java, SDK [AWS JavaScript per o SDK](https://aws.amazon.com/sdk-for-javascript/) [AWS per Python (Boto3) per](https://docs.aws.amazon.com/pythonsdk/) eseguire APIs

**Limitazioni**
+ I dati in questo modello non vengono caricati in tempo reale nel bucket S3. Esiste un periodo di ritardo ed è possibile configurare il periodo di ritardo. I dati vengono temporaneamente memorizzati nel buffer nel dispositivo periferico e quindi caricati una volta scaduto il periodo.
+ L'SDK è disponibile solo in Java, Node.js e Python.

## Architecture
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-architecture"></a>

**Stack tecnologico Target**
+ Simple Storage Service (Amazon S3)
+ AWS IoT Greengrass
+ Broker MQTT
+ Componente Stream Manager

**Architettura Target**

Il diagramma seguente mostra un'architettura progettata per importare i dati dei sensori IoT e archiviarli in un bucket S3.

![\[Diagramma architetturale\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/b9032ae2-fffb-4750-b161-09810e19d878/images/8c28e639-5dcf-4950-b4a6-8015ec1a2894.png)


Il diagramma mostra il flusso di lavoro seguente:

1. Gli aggiornamenti di più sensori (ad esempio, temperatura e valvola) vengono pubblicati su un broker MQTT locale.

1. Il compressore di file Parquet sottoscritto a questi sensori aggiorna gli argomenti e riceve questi aggiornamenti.

1. Il compressore di file Parquet memorizza gli aggiornamenti localmente.

1. Trascorso il periodo, i file memorizzati vengono compressi in file Parquet e passati allo stream manager per essere caricati nel bucket S3 specificato.

1. Lo stream manager carica i file Parquet nel bucket S3.

**Nota**  
Lo stream manager (`StreamManager`) è un componente gestito. Per esempi di come esportare dati in Amazon S3, consulta [Stream manager](https://docs.aws.amazon.com/greengrass/v2/developerguide/stream-manager-component.html) nella documentazione di AWS IoT Greengrass. [Puoi utilizzare un broker MQTT locale come componente o un altro broker come Eclipse Mosquitto.](https://mosquitto.org/)

## Tools (Strumenti)
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-tools"></a>

**Strumenti AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) è un servizio di query interattivo che ti aiuta ad analizzare i dati direttamente in Amazon S3 utilizzando SQL standard.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
+ [AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html) è un servizio cloud e di runtime IoT edge open source che ti aiuta a creare, distribuire e gestire applicazioni IoT sui tuoi dispositivi.

**Altri strumenti**
+ [Apache Parquet](https://parquet.apache.org/) è un formato di file di dati open source orientato alle colonne progettato per l'archiviazione e il recupero.
+ [MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html) (Message Queuing Telemetry Transport) è un protocollo di messaggistica leggero progettato per dispositivi con limitazioni.

## Best practice
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-best-practices"></a>

**Utilizza il formato di partizione corretto per i dati caricati**

Non ci sono requisiti specifici per i nomi dei prefissi root nel bucket S3 (ad esempio, `"myAwesomeDataSet/"` or`"dataFromSource"`), ma ti consigliamo di utilizzare una partizione e un prefisso significativi in modo che sia facile comprendere lo scopo del set di dati.

Ti consigliamo inoltre di utilizzare il giusto partizionamento in Amazon S3 in modo che le query vengano eseguite in modo ottimale sul set di dati. Nell'esempio seguente, i dati vengono partizionati in formato HIVE in modo da ottimizzare la quantità di dati analizzati da ciascuna query Athena. Ciò migliora le prestazioni e riduce i costi.

`s3://<ingestionBucket>/<rootPrefix>/year=YY/month=MM/day=DD/HHMM_<suffix>.parquet`

## Epiche
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-epics"></a>

### Configurare l'ambiente
<a name="set-up-your-environment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un bucket S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Sviluppatore di app | 
| Aggiungi le autorizzazioni IAM al bucket S3. | Per concedere agli utenti l'accesso in scrittura al bucket e al prefisso S3 che hai creato in precedenza, aggiungi la seguente policy IAM al tuo ruolo AWS IoT Greengrass:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "S3DataUpload",<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:List*",<br />                "s3:Put*"<br />            ],<br />            "Resource": [<br />                "arn:aws:s3:::<ingestionBucket>",<br />                "arn:aws:s3:::<ingestionBucket>/<prefix>/*"<br />            ]<br />        }<br />    ]<br />}</pre>Per ulteriori informazioni, consulta [Creazione di una policy IAM per accedere alle risorse di Amazon S3 nella documentazione](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.html) di Aurora.[Successivamente, aggiorna la policy delle risorse (se necessario) per il bucket S3 per consentire l'accesso in scrittura con i principali AWS corretti.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-bucket-user-policy-specifying-principal-intro.html) | Sviluppatore di app | 

### Crea e distribuisci il componente AWS IoT Greengrass
<a name="build-and-deploy-the-aws-iot-greengrass-component"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Aggiorna la ricetta del componente. | [Aggiorna la configurazione del componente](https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html) quando [crei una distribuzione](https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html) in base al seguente esempio:<pre>{<br />  "region": "<region>",<br />  "parquet_period": <period>,<br />  "s3_bucket": "<s3Bucket>",<br />  "s3_key_prefix": "<s3prefix>"<br />}</pre>Sostituisci `<region>` con la tua regione AWS, `<period>` con il tuo intervallo periodico, `<s3Bucket>` con il tuo bucket S3 e `<s3prefix>` con il tuo prefisso. | Sviluppatore di app | 
| Crea il componente. | Esegui una delle seguenti operazioni:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Sviluppatore di app | 
| Aggiornate il client MQTT. | Il codice di esempio non utilizza l'autenticazione perché il componente si connette localmente al broker. Se lo scenario è diverso, aggiorna la sezione client MQTT secondo necessità. Inoltre, effettuate le seguenti operazioni:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Sviluppatore di app | 

### Aggiungi il componente al dispositivo core AWS IoT Greengrass versione 2
<a name="add-the-component-to-the-aws-iot-greengrass-version-2-core-device"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Aggiorna la distribuzione del dispositivo principale. | Se la distribuzione del dispositivo core AWS IoT Greengrass versione 2 esiste già, [rivedi](https://docs.aws.amazon.com/greengrass/v2/developerguide/revise-deployments.html) la distribuzione. Se la distribuzione non esiste, [crea una nuova](https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html) distribuzione.Per assegnare al componente il nome corretto, [aggiorna la configurazione del gestore dei registri](https://docs.aws.amazon.com/greengrass/v2/developerguide/log-manager-component.html) per il nuovo componente (se necessario) in base a quanto segue:<pre>{<br />  "logsUploaderConfiguration": {<br />    "systemLogsConfiguration": {<br />    ...<br />    },<br />    "componentLogsConfigurationMap": {<br />      "<com.iot.ingest.parquet>": {<br />        "minimumLogLevel": "INFO",<br />        "diskSpaceLimit": "20",<br />        "diskSpaceLimitUnit": "MB",<br />        "deleteLogFileAfterCloudUpload": "false"<br />      }<br />      ...<br />    }<br />  },<br />  "periodicUploadIntervalSec": "300"<br />}</pre>Infine, completa la revisione della distribuzione per il tuo dispositivo principale AWS IoT Greengrass. | Sviluppatore di app | 

### Verifica l'inserimento dei dati nel bucket S3
<a name="verify-data-ingestion-into-the-s3-bucket"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Controlla i log per il volume AWS IoT Greengrass. | Verifica quanto segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Sviluppatore di app | 
| Controlla il bucket S3. | Verifica se i dati vengono caricati nel bucket S3. Puoi vedere i file che vengono caricati in ogni momento.Puoi anche verificare se i dati vengono caricati nel bucket S3 interrogando i dati nella sezione successiva. | Sviluppatore di app | 

### Configurare l'interrogazione da Athena
<a name="set-up-querying-from-athena"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un database e una tabella. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Sviluppatore di app | 
| Concedi ad Athena l'accesso ai dati. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Sviluppatore di app | 

## risoluzione dei problemi
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| Il client MQTT non riesce a connettersi | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | 
| Il client MQTT non riesce a sottoscrivere | Convalida le autorizzazioni sul broker MQTT. Se disponi di un broker MQTT di AWS, consulta broker [MQTT 3.1.1 (Moquette) e broker [MQTT 5 (EMQX](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-emqx-component.html))](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-moquette-component.html). | 
| I file Parquet non vengono creati | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | 
| Gli oggetti non vengono caricati nel bucket S3 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | 

## Risorse correlate
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-resources"></a>
+ [DataFrame](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html)(documentazione Pandas)
+ Documentazione [Apache Parquet (documentazione Parquet](https://parquet.apache.org/docs/))
+ [Sviluppa componenti AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/develop-greengrass-components.html) (Guida per sviluppatori AWS IoT Greengrass, versione 2)
+ [Distribuisci i componenti di AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-deployments.html) sui dispositivi (AWS IoT Greengrass Developer Guide, versione 2)
+ [Interagisci con dispositivi IoT locali](https://docs.aws.amazon.com/greengrass/v2/developerguide/interact-with-local-iot-devices.html) (AWS IoT Greengrass Developer Guide, versione 2)
+ [Broker MQTT 3.1.1 (Moquette) (Guida](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-moquette-component.html) per sviluppatori AWS IoT Greengrass, versione 2)
+ [Broker MQTT 5 (EMQX) (Guida](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-emqx-component.html) per sviluppatori AWS IoT Greengrass, versione 2)

## Informazioni aggiuntive
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-additional"></a>

**Analisi dei costi**

Il seguente scenario di analisi dei costi dimostra come l'approccio di ingestione dei dati coperto da questo modello può influire sui costi di inserimento dei dati nel cloud AWS. Gli esempi di prezzo in questo scenario si basano sui prezzi al momento della pubblicazione. I prezzi sono soggetti a modifiche. Inoltre, i costi possono variare in base alla regione AWS, alle quote di servizio AWS e ad altri fattori correlati all'ambiente cloud.

*Set di segnali di ingresso*

Questa analisi utilizza il seguente set di segnali di ingresso come base per confrontare i costi di ingestione dell'IoT con altre alternative disponibili.


| 
| 
| Numero di segnali | Frequenza | Dati per segnale | 
| --- |--- |--- |
| 125 | 25 Hz | 8 byte | 

In questo scenario, il sistema riceve 125 segnali. Ogni segnale è di 8 byte e si verifica ogni 40 millisecondi (25 Hz). Questi segnali possono provenire singolarmente o raggruppati in un payload comune. Hai la possibilità di dividere e comprimere questi segnali in base alle tue esigenze. Puoi anche determinare la latenza. La latenza è il periodo di tempo necessario per ricevere, accumulare e importare i dati.

A scopo di confronto, l'operazione di importazione per questo scenario si basa nella regione `us-east-1` AWS. Il confronto dei costi si applica solo ai servizi AWS. Altri costi, come l'hardware o la connettività, non vengono presi in considerazione nell'analisi.

*Confronti dei costi*

La tabella seguente mostra il costo mensile in dollari USA (USD) per ogni metodo di ingestione.


| 
| 
| Metodo | Costo mensile | 
| --- |--- |
| AWS SiteWise *IoT\$1* | 331,77 DOLLARI | 
| AWS IoT SiteWise Edge con pacchetto di elaborazione dati (mantenimento di tutti i dati all'edge) | 200 DOLLARI | 
| Regole di AWS IoT Core e Amazon S3 per l'accesso ai dati grezzi | 84,54 DOLLARI | 
| Compressione dei file Parquet a livello periferico e caricamento su Amazon S3 | 0,5 DOLLARI | 

\$1I dati devono essere sottoposti a downsampling per rispettare le quote di servizio. Ciò significa che si verifica una perdita di dati con questo metodo.

*Metodi alternativi*

Questa sezione mostra i costi equivalenti per i seguenti metodi alternativi:
+ **AWS IoT SiteWise**: ogni segnale deve essere caricato in un messaggio individuale. Pertanto, il numero totale di messaggi al mese è di 125 × 25 × 3600 × 24 × 30, ovvero 8,1 miliardi di messaggi al mese. Tuttavia, AWS IoT SiteWise può gestire solo 10 punti dati al secondo per proprietà. Supponendo che i dati vengano sottoposti a downsampling a 10 Hz, il numero di messaggi al mese viene ridotto a 125×10×3600×24×30, ovvero 3,24 miliardi. Se utilizzi il componente Publisher che raggruppa le misurazioni in gruppi di 10 (a 1 USD per milione di messaggi), ottieni un costo mensile di 324 USD al mese. Supponendo che ogni messaggio sia di 8 byte (1 Kb/125), si tratta di 25,92 GB di spazio di archiviazione dati. Ciò aggiunge un costo mensile di 7,77 USD al mese. Il costo totale per il primo mese è di 331,77 USD e aumenta di 7,77 USD ogni mese.
+ **AWS IoT SiteWise Edge con pacchetto di elaborazione dati, inclusi tutti i modelli e i segnali completamente elaborati sull'edge (ovvero, nessuna ingestione nel cloud)**: puoi utilizzare il pacchetto di elaborazione dati come alternativa per ridurre i costi e configurare tutti i modelli che vengono calcolati all'edge. Questo può funzionare solo per l'archiviazione e la visualizzazione, anche se non viene eseguito alcun calcolo reale. In questo caso, è necessario utilizzare un hardware potente per l'edge gateway. C'è un costo fisso di 200 USD al mese.
+ **Inserimento diretto in AWS IoT Core tramite MQTT e una regola IoT per archiviare i dati grezzi in Amazon S3** — Supponendo che tutti i segnali siano pubblicati in un payload comune, il numero totale di messaggi pubblicati su AWS IoT Core è di 25×3600×24×30, ovvero 64,8 milioni al mese. A 1 USD per milione di messaggi, si tratta di un costo mensile di 64,8 USD al mese. Con 0,15 USD per milione di attivazioni di regole e con una regola per messaggio, si aggiunge un costo mensile di 19,44 USD al mese. Al costo di 0,023 USD per Gb di storage in Amazon S3, ciò aggiunge altri 1,5 USD al mese (in aumento ogni mese per riflettere i nuovi dati). Il costo totale per il primo mese è di 84,54 USD e aumenta di 1,5 USD ogni mese.
+ Compressione **dei dati all'edge in un file Parquet e caricamento su Amazon S3 (metodo proposto**): il rapporto di compressione dipende dal tipo di dati. Con gli stessi dati industriali testati per MQTT, i dati di output totali per un mese intero sono 1,2 Gb. Questo costa 0,03 USD al mese. I rapporti di compressione (utilizzando dati casuali) descritti in altri benchmark sono dell'ordine del 66 percento (più vicini allo scenario peggiore). Il totale dei dati è di 21 Gb e costa 0,5 USD al mese.

**Generatore di file Parquet**

Il seguente esempio di codice mostra la struttura di un generatore di file Parquet scritto in Python. L'esempio di codice è solo a scopo illustrativo e non funzionerà se incollato nel tuo ambiente.

```
import queue
import paho.mqtt.client as mqtt
import pandas as pd

#queue for decoupling the MQTT thread
messageQueue = queue.Queue()
client = mqtt.Client()
streammanager = StreamManagerClient()

def feederListener(topic, message):
    payload = {
        "topic" : topic,
        "payload" : message,
    }
    messageQueue.put_nowait(payload)

def on_connect(client_instance, userdata, flags, rc):
    client.subscribe("#",qos=0)

def on_message(client, userdata, message):
    feederListener(topic=str(message.topic), message=str(message.payload.decode("utf-8")))


filename = "tempfile.parquet"
streamname = "mystream"
destination_bucket= "amzn-s3-demo-bucket"
keyname="mykey"
period= 60

client.on_connect = on_connect
client.on_message = on_message
streammanager.create_message_stream(
            MessageStreamDefinition(name=streamname, strategy_on_full=StrategyOnFull.OverwriteOldestData)
        )


while True:
   try:
       message = messageQueue.get(timeout=myArgs.mqtt_timeout)
   except (queue.Empty):
       logger.warning("MQTT message reception timed out")

   currentTimestamp = getCurrentTime()
   if currentTimestamp >= nextUploadTimestamp:
       df = pd.DataFrame.from_dict(accumulator)
       df.to_parquet(filename)
       s3_export_task_definition = S3ExportTaskDefinition(input_url=filename, bucket=destination_bucket, key=key_name)
       streammanager.append_message(streamname, Util.validate_and_serialize_to_json_bytes(s3_export_task_definition))
       accumulator = {}
       nextUploadTimestamp += period
   else:
        accumulator.append(message)
```

# Avvia un job Spark in un cluster EMR transitorio utilizzando una funzione Lambda
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function"></a>

*Dhrubajyoti Mukherjee, Amazon Web Services*

## Riepilogo
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-summary"></a>

Questo modello utilizza l'azione dell' RunJobFlow API Amazon EMR per avviare un cluster transitorio per eseguire un job Spark da una funzione Lambda. Un cluster EMR temporaneo è progettato per terminare non appena il processo è completo o se si verifica un errore. Un cluster transitorio offre risparmi sui costi perché funziona solo durante il periodo di calcolo e offre scalabilità e flessibilità in un ambiente cloud.

Il cluster EMR transitorio viene avviato utilizzando l'API Boto3 e il linguaggio di programmazione Python in una funzione Lambda. La funzione Lambda, scritta in Python, offre la flessibilità aggiuntiva di avviare il cluster quando è necessario.

Per dimostrare il calcolo e l'output di un batch di esempio, questo modello avvierà un job Spark in un cluster EMR da una funzione Lambda ed eseguirà un calcolo in batch con i dati di vendita di esempio di un'azienda fittizia. L'output del job Spark sarà un file con valori separati da virgole (CSV) in Amazon Simple Storage Service (Amazon S3). Il file di dati di input, il file Spark .jar, uno snippet di codice e un CloudFormation modello AWS per un cloud privato virtuale (VPC) e i ruoli AWS Identity and Access Management (IAM) per eseguire il calcolo sono forniti come allegato.

## Prerequisiti e limitazioni
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo

**Limitazioni**
+ È possibile avviare un solo job Spark alla volta dal codice. 

**Versioni del prodotto**
+ Testato su Amazon EMR 6.0.0

## Architecture
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-architecture"></a>

**Stack tecnologico Target**
+ Amazon EMR 
+ AWS Lambda
+ Simple Storage Service (Amazon S3)
+ Apache Spark

**Architettura di destinazione**

![\[Da Lambda ad Amazon EMR e da Spark ad Amazon S3\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/6c999fa7-9550-4929-a5c1-60394142175d/images/eb4fbb3f-2114-44d2-b9da-3fdcb9ca456e.png)


**Automazione e scalabilità**

Per automatizzare il calcolo in batch Spark-EMR, puoi utilizzare una delle seguenti opzioni.
+ Implementa una EventBridge regola Amazon in grado di avviare la funzione Lambda in una pianificazione cron. Per ulteriori informazioni, consulta [Tutorial: Schedule AWS Lambda functions using](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-run-lambda-schedule.html). EventBridge
+ Configura le [notifiche degli eventi di Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) per avviare la funzione Lambda all'arrivo dei file.
+ Passa i parametri di input alla funzione AWS Lambda tramite il corpo dell'evento e le variabili di ambiente Lambda. 

## Tools (Strumenti)
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-tools"></a>

**Servizi AWS**
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) è una piattaforma di cluster gestita che semplifica l'esecuzione di framework di big data su AWS per elaborare e analizzare grandi quantità di dati.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di elaborazione che ti aiuta a eseguire codice senza dover fornire o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di calcolo che utilizzi.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

**Altri strumenti**
+ [Apache Spark](https://spark.apache.org/docs/latest/) è un motore di analisi multilingue per l'elaborazione di dati su larga scala.

## Epiche
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-epics"></a>

### Crea i ruoli IAM di Amazon EMR e Lambda e il VPC
<a name="create-the-amazon-emr-and-lambda-iam-roles-and-the-vpc"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea i ruoli IAM e il VPC. | Se disponi già dei ruoli IAM di AWS Lambda e Amazon EMR e di un VPC, puoi saltare questo passaggio. Per eseguire il codice, sia il cluster EMR che la funzione Lambda richiedono ruoli IAM. Il cluster EMR richiede anche un VPC con una sottorete pubblica o una sottorete privata con un gateway NAT. *Per creare automaticamente tutti i ruoli IAM e un VPC, distribuisci il CloudFormation modello AWS allegato così com'è oppure puoi creare i ruoli e il VPC manualmente come specificato nella sezione Informazioni aggiuntive.* | Architetto del cloud | 
| Nota le chiavi di output CloudFormation del modello AWS. | Dopo che il CloudFormation modello è stato distribuito correttamente, vai alla scheda **Outputs** nella console CloudFormation AWS. Nota i cinque tasti di output: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function.html)Utilizzerai i valori di queste chiavi quando creerai la funzione Lambda. | Architetto del cloud | 

### Carica il file Spark .jar
<a name="upload-the-spark-jar-file"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Carica il file.jar di Spark. | Carica il file Spark .jar nel bucket S3 creato dallo stack AWS. CloudFormation Il nome del bucket è lo stesso della chiave di output. `S3Bucket`  | Informazioni generali su AWS | 

### Crea la funzione Lambda per avviare il cluster EMR
<a name="create-the-lambda-function-to-launch-the-emr-cluster"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Creazione di una funzione Lambda. | Sulla console Lambda, crea una funzione Lambda Python 3.9\$1 con un ruolo di esecuzione. La politica del ruolo di esecuzione deve consentire a Lambda di avviare un cluster EMR. (Vedi il CloudFormation modello AWS allegato). | Ingegnere dei dati, ingegnere del cloud | 
| Copia e incolla il codice. | Sostituisci il codice nel `lambda_function.py` file con il codice della sezione *Informazioni aggiuntive* di questo modello. | Ingegnere dei dati, ingegnere del cloud | 
| Modifica i parametri nel codice. | Segui i commenti nel codice per modificare i valori dei parametri in modo che corrispondano al tuo account AWS. | Ingegnere dei dati, ingegnere del cloud | 
| Avvia la funzione per avviare il cluster. | Avvia la funzione per avviare la creazione di un cluster EMR transitorio con il file Spark .jar fornito. Eseguirà il job Spark e terminerà automaticamente quando il job sarà completo. | Ingegnere dei dati, ingegnere del cloud | 
| Verificare lo stato del cluster EMR. | **Dopo l'avvio, il cluster EMR viene visualizzato nella console Amazon EMR nella scheda Clusters.** Eventuali errori durante l'avvio del cluster o l'esecuzione del processo possono essere controllati di conseguenza. | Ingegnere dei dati, ingegnere del cloud | 

### Configura ed esegui la demo di esempio
<a name="set-up-and-run-the-sample-demo"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Carica il file.jar di Spark.  | Scarica il file Spark .jar dalla sezione *Allegati* e caricalo nel bucket S3. | Ingegnere dei dati, ingegnere del cloud | 
| Carica il set di dati di input. | Carica il `fake_sales_data.csv` file allegato nel bucket S3. | Ingegnere dei dati, ingegnere del cloud | 
| Incolla il codice Lambda e modifica i parametri. | Copia il codice dalla sezione **Strumenti** e incolla il codice in una funzione Lambda, sostituendo il file di codice. `lambda_function.py` Modifica i valori dei parametri in modo che corrispondano al tuo account. | Ingegnere dei dati, ingegnere del cloud | 
| Avvia la funzione e verifica l'output. | Dopo che la funzione Lambda ha avviato il cluster con il job Spark fornito, genera un file.csv nel bucket S3. | Ingegnere dei dati, ingegnere del cloud | 

## Risorse correlate
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-resources"></a>
+ [Costruire Spark](https://spark.apache.org/docs/latest/building-spark.html)
+ [Apache Spark e Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark.html)
+ [Documentazione run\$1job\$1flow di Boto3 Docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/emr.html#EMR.Client.run_job_flow)
+ [Informazioni e documentazione su Apache Spark](https://spark.apache.org/)

## Informazioni aggiuntive
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-additional"></a>

**Codice**

```
"""
Copy paste the following code in your Lambda function. Make sure to change the following key parameters for the API as per your account

-Name (Name of Spark cluster)
-LogUri (S3 bucket to store EMR logs)
-Ec2SubnetId (The subnet to launch the cluster into)
-JobFlowRole (Service role for EC2)
-ServiceRole (Service role for Amazon EMR)

The following parameters are additional parameters for the Spark job itself. Change the bucket name and prefix for the Spark job (located at the bottom).

-s3://your-bucket-name/prefix/lambda-emr/SparkProfitCalc.jar (Spark jar file)
-s3://your-bucket-name/prefix/fake_sales_data.csv (Input data file in S3)
-s3://your-bucket-name/prefix/outputs/report_1/ (Output location in S3)
"""
import boto3

client = boto3.client('emr')


def lambda_handler(event, context):
    response = client.run_job_flow(
        Name='spark_job_cluster',
        LogUri='s3://your-bucket-name/prefix/logs',
        ReleaseLabel='emr-6.0.0',
        Instances={
            'MasterInstanceType': 'm5.xlarge',
            'SlaveInstanceType': 'm5.large',
            'InstanceCount': 1,
            'KeepJobFlowAliveWhenNoSteps': False,
            'TerminationProtected': False,
            'Ec2SubnetId': 'subnet-XXXXXXXXXXXXXX'
        },
        Applications=[{'Name': 'Spark'}],
        Configurations=[
            {'Classification': 'spark-hive-site',
             'Properties': {
                 'hive.metastore.client.factory.class': 'com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory'}
             }
        ],
        VisibleToAllUsers=True,
        JobFlowRole='EMRLambda-EMREC2InstanceProfile-XXXXXXXXX',
        ServiceRole='EMRLambda-EMRRole-XXXXXXXXX',
        Steps=[
            {
                'Name': 'flow-log-analysis',
                'ActionOnFailure': 'TERMINATE_CLUSTER',
                'HadoopJarStep': {
                    'Jar': 'command-runner.jar',
                    'Args': [
                        'spark-submit',
                        '--deploy-mode', 'cluster',
                        '--executor-memory', '6G',
                        '--num-executors', '1',
                        '--executor-cores', '2',
                        '--class', 'com.aws.emr.ProfitCalc',
                        's3://your-bucket-name/prefix/lambda-emr/SparkProfitCalc.jar',
                        's3://your-bucket-name/prefix/fake_sales_data.csv',
                        's3://your-bucket-name/prefix/outputs/report_1/'
                    ]
                }
            }
        ]
    )
```

**Ruoli IAM e creazione di VPC**

Per avviare il cluster EMR in una funzione Lambda, sono necessari ruoli VPC e IAM. Puoi configurare i ruoli VPC e IAM utilizzando il CloudFormation modello AWS nella sezione Attachments di questo modello oppure puoi crearli manualmente utilizzando i seguenti link. 

I seguenti ruoli IAM sono necessari per eseguire Lambda e Amazon EMR. 

*Ruolo di esecuzione Lambda*

Il [ruolo di esecuzione](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) di una funzione Lambda le concede l'autorizzazione ad accedere ai servizi e alle risorse AWS.

*Ruolo di servizio per Amazon EMR*

Il [ruolo Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role.html) definisce le azioni consentite per Amazon EMR durante il provisioning di risorse e l'esecuzione di attività a livello di servizio che non vengono eseguite nel contesto di un'istanza Amazon Elastic Compute Cloud (Amazon) in esecuzione all'interno di un cluster. EC2 Ad esempio, il ruolo di servizio viene utilizzato per fornire istanze all'avvio di un cluster. EC2 

*Ruolo di servizio per le istanze EC2 *

Il [ruolo di servizio per EC2 le istanze di cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html) (chiamato anche profilo di EC2 istanza per Amazon EMR) è un tipo speciale di ruolo di servizio assegnato a EC2 ogni istanza di un cluster Amazon EMR all'avvio dell'istanza. I processi applicativi eseguiti su Apache Hadoop assumono questo ruolo per le autorizzazioni di interazione con altri servizi AWS.

*Creazione di VPC e sottoreti*

Puoi [creare un VPC dalla console](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#create-vpc-and-other-resources) VPC. 

## Allegati
<a name="attachments-6c999fa7-9550-4929-a5c1-60394142175d"></a>

[Per accedere a contenuti aggiuntivi associati a questo documento, decomprimi il seguente file: attachment.zip](samples/p-attach/6c999fa7-9550-4929-a5c1-60394142175d/attachments/attachment.zip)

# Esegui la migrazione dei carichi di lavoro Apache Cassandra su Amazon Keyspaces utilizzando AWS Glue
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue"></a>

*Nikolai Kolesnikov, Karthiga Priya Chandran e Samir Patel, Amazon Web Services*

## Riepilogo
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-summary"></a>

Questo modello mostra come migrare i carichi di lavoro Apache Cassandra esistenti su Amazon Keyspaces (per Apache Cassandra) utilizzando AWS Glue. CQLReplicator Puoi utilizzarlo CQLReplicator su AWS Glue per ridurre al minimo il ritardo di replica della migrazione dei carichi di lavoro fino a pochi minuti. Scopri anche come usare un bucket Amazon Simple Storage Service (Amazon S3) per archiviare i dati necessari per la migrazione, [inclusi file Apache](https://parquet.apache.org/) Parquet, file di configurazione e script. Questo modello presuppone che i carichi di lavoro Cassandra siano ospitati su istanze Amazon Elastic Compute Cloud (Amazon EC2) in un cloud privato virtuale (VPC).

## Prerequisiti e limitazioni
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-prereqs"></a>

**Prerequisiti**
+ Cluster Cassandra con una tabella di origine
+ Tabella di destinazione in Amazon Keyspaces per replicare il carico di lavoro
+ Bucket S3 per archiviare file Parquet intermedi che contengono modifiche incrementali ai dati
+ Bucket S3 per archiviare i file e gli script di configurazione del lavoro

**Limitazioni**
+ CQLReplicator su AWS Glue richiede del tempo per fornire unità di elaborazione dati (DPUs) per i carichi di lavoro Cassandra. È probabile che il ritardo di replica tra il cluster Cassandra e lo spazio chiave e la tabella di destinazione in Amazon Keyspaces duri solo pochi minuti.

## Architecture
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-architecture"></a>

**Stack tecnologico di origine**
+ Apache Cassandra
+ DataStax Server
+ ScyllaDB

**Stack tecnologico Target**
+ Amazon Keyspaces

**Architettura di migrazione**

Il diagramma seguente mostra un'architettura di esempio in cui un cluster Cassandra è ospitato su EC2 istanze e distribuito su tre zone di disponibilità. I nodi Cassandra sono ospitati in sottoreti private.

![\[Ruolo di servizio personalizzato, Amazon Keyspaces e Amazon S3, con AWS Glue che si connette ai nodi VPC.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/e08048da-8996-4f2c-b8ed-da49fe9e693b/images/76256ab3-a1e6-4c9e-9c40-dc78f51edf0f.png)


Il diagramma mostra il flusso di lavoro seguente:

1. Un ruolo di servizio personalizzato fornisce l'accesso ad Amazon Keyspaces e al bucket S3.

1. Un job AWS Glue legge la configurazione del lavoro e gli script nel bucket S3.

1. Il job AWS Glue si connette tramite la porta 9042 per leggere i dati dal cluster Cassandra.

1. Il job AWS Glue si connette tramite la porta 9142 per scrivere dati su Amazon Keyspaces.

## Tools (Strumenti)
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-tools"></a>

**Servizi e strumenti AWS**
+ [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)) è uno strumento open source che ti aiuta a interagire con i servizi AWS tramite comandi nella tua shell a riga di comando.
+ [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) è una shell basata su browser che puoi utilizzare per gestire i servizi AWS utilizzando l'AWS Command Line Interface (AWS CLI) e una gamma di strumenti di sviluppo preinstallati.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) è un servizio ETL completamente gestito che ti aiuta a classificare, pulire, arricchire e spostare in modo affidabile i dati tra archivi e flussi di dati.
+ [Amazon Keyspaces (per Apache Cassandra)](https://docs.aws.amazon.com/keyspaces/latest/devguide/what-is-keyspaces.html) è un servizio di database gestito che ti aiuta a migrare, eseguire e scalare i carichi di lavoro Cassandra nel cloud AWS.

**Codice**

Il codice per questo pattern è disponibile nel repository. GitHub [CQLReplicator](https://github.com/aws-samples/cql-replicator/tree/main/glue)

## Best practice
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-best-practices"></a>
+ Per determinare le risorse AWS Glue necessarie per la migrazione, stima il numero di righe nella tabella Cassandra di origine. Ad esempio, 250.000 righe per 0,25 DPU (2 vCPUs, 4 GB di memoria) con disco da 84 GB.
+ Preriscalda le tabelle Amazon Keyspaces prima dell'esecuzione. CQLReplicator Ad esempio, otto CQLReplicator tile (AWS Glue jobs) possono scrivere fino a 22 K WCUs al secondo, quindi il target deve essere preriscaldato a 25-30 K WCUs al secondo.
+ Per abilitare la comunicazione tra i componenti di AWS Glue, utilizza una regola di ingresso autoreferenziale per tutte le porte TCP del tuo gruppo di sicurezza.
+ Utilizza la strategia di traffico incrementale per distribuire il carico di lavoro di migrazione nel tempo.

## Epiche
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-epics"></a>

### Implementare CQLReplicator
<a name="deploy-cqlreplicator"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea uno spazio chiave e una tabella di destinazione.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | Proprietario dell'app, amministratore AWS, DBA, sviluppatore di app | 
| Configura il driver Cassandra per connetterti a Cassandra. | Usa il seguente script di configurazione:<pre>Datastax-java-driver {<br />  basic.request.consistency = "LOCAL_QUORUM"<br />  basic.contact-points = ["127.0.0.1:9042"]<br />   advanced.reconnect-on-init = true<br />   basic.load-balancing-policy {<br />        local-datacenter = "datacenter1"<br />}<br />advanced.auth-provider = {<br />       class = PlainTextAuthProvider<br />       username = "user-at-sample"<br />       password = "S@MPLE=PASSWORD="<br />}<br />}</pre>Lo script precedente utilizza lo Spark Cassandra Connector. [Per ulteriori informazioni, consulta la configurazione di riferimento per Cassandra.](https://docs.datastax.com/en/developer/java-driver/4.17/manual/core/configuration/reference/) | DBA | 
| Configura il driver Cassandra per la connessione ad Amazon Keyspaces. | Usa il seguente script di configurazione:<pre>datastax-java-driver {<br />basic {<br />  load-balancing-policy {<br />    local-datacenter = us-west-2<br />        }<br />  contact-points = [<br />            "cassandra.us-west-2.amazonaws.com:9142"<br />        ]<br />  request {<br />  page-size = 2500<br />  timeout = 360 seconds<br />  consistency = LOCAL_QUORUM<br />        }<br />    }<br />advanced {<br /> control-connection {<br />  timeout = 360 seconds<br />        }<br /> session-leak.threshold = 6<br /> connection {<br /> connect-timeout = 360 seconds<br /> init-query-timeout = 360 seconds<br /> warn-on-init-error = false<br />        }<br /> auth-provider = {<br />  class = software.aws.mcs.auth.SigV4AuthProvider<br />  aws-region = us-west-2<br /> }<br /><br /> ssl-engine-factory {<br />  class = DefaultSslEngineFactory<br />        }<br />    }<br />}</pre>Lo script precedente utilizza lo Spark Cassandra Connector. [Per ulteriori informazioni, consulta la configurazione di riferimento per Cassandra.](https://docs.datastax.com/en/developer/java-driver/4.17/manual/core/configuration/reference/) | DBA | 
| Crea un ruolo IAM per il job AWS Glue. | Crea un nuovo ruolo di servizio AWS denominato `glue-cassandra-migration` con AWS Glue come entità affidabile.`glue-cassandra-migration`Dovrebbe fornire l'accesso in lettura e scrittura al bucket S3 e ad Amazon Keyspaces. Il bucket S3 contiene i file.jar, i file di configurazione per Amazon Keyspaces e Cassandra e i file Parquet intermedi. Ad esempio, contiene le, e le politiche gestite. `AWSGlueServiceRole` `AmazonS3FullAccess` `AmazonKeyspacesFullAccess` | AWS DevOps | 
| Scarica CQLReplicator in AWS CloudShell. | Scarica il progetto nella tua cartella home eseguendo il seguente comando:<pre>git clone https://github.com/aws-samples/cql-replicator.git<br />cd cql-replicator/glue<br /># Only for AWS CloudShell, the bc package includes bc and dc. Bc is an arbitrary precision numeric processing arithmetic language<br />sudo yum install bc -y</pre> |  | 
| Modificate i file di configurazione di riferimento. | Copia `CassandraConnector.conf` e `KeyspacesConnector.conf` `../glue/conf` inseriscilo nella cartella del progetto. | AWS DevOps | 
| Avvia il processo di migrazione. | Il comando seguente inizializza l'ambiente. CQLReplicator L'inizializzazione prevede la copia di artefatti.jar e la creazione di un connettore AWS Glue, un bucket S3, un job AWS Glue, il keyspace e la tabella: `migration` `ledger`<pre>cd cql-replicator/glue/bin<br />./cqlreplicator --state init --sg '"sg-1","sg-2"' \ <br />                --subnet "subnet-XXXXXXXXXXXX" \ <br />                --az us-west-2a --region us-west-2 \ <br />                --glue-iam-role glue-cassandra-migration \ <br />                --landing-zone s3://cql-replicator-1234567890-us-west-2<br /></pre>Questo script include i seguenti parametri:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | AWS DevOps | 
| Convalida la distribuzione. | Dopo aver eseguito il comando precedente, l'account AWS dovrebbe contenere quanto segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | AWS DevOps | 

### Esegui CQLReplicator
<a name="run-cqlreplicator"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Avvia il processo di migrazione. | Per operare CQLReplicator su AWS Glue, è necessario utilizzare il `--state run` comando seguito da una serie di parametri. La configurazione precisa di questi parametri è determinata principalmente dai tuoi requisiti di migrazione unici. Ad esempio, queste impostazioni potrebbero variare se scegli di replicare i valori e gli aggiornamenti del time to live (TTL) o se scarichi oggetti superiori a 1 MB su Amazon S3.Per replicare il carico di lavoro dal cluster Cassandra ad Amazon Keyspaces, esegui il seguente comando: <pre>./cqlreplicator --state run --tiles 8  \<br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \ <br />                --region us-west-2 \                              <br />                --src-keyspace source_keyspace \ <br />                --src-table source_table \  <br />                --trg-keyspace taget_keyspace \<br />                --writetime-column column_name \<br />                --trg-table target_table --inc-traffic</pre>Lo spazio chiave e la tabella di origine si trovano `source_keyspace.source_table` nel cluster Cassandra. Lo spazio chiave e la tabella di destinazione si trovano `target_keyspace.target_table` in Amazon Keyspaces. Il parametro `--inc-traffic` aiuta a evitare che il traffico incrementale sovraccarichi il cluster Cassandra e Amazon Keyspaces con un numero elevato di richieste.Per replicare gli aggiornamenti, `--writetime-column regular_column_name` aggiungili alla riga di comando. La colonna normale verrà utilizzata come fonte del timestamp di scrittura. | AWS DevOps | 

### Monitora il processo di migrazione
<a name="monitor-the-migration-process"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Convalida le righe di Cassandra migrate durante la fase di migrazione storica. | Per ottenere il numero di righe replicate durante la fase di riempimento, esegui il seguente comando:<pre>./cqlreplicator --state stats \<br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \  <br />                --src-keyspace source_keyspace --src-table source_table --region us-west-2</pre> | AWS DevOps | 

### Interrompi il processo di migrazione
<a name="stop-the-migration-process"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Usa il `cqlreplicator` comando o la console AWS Glue. | Per interrompere correttamente il processo di migrazione, esegui il seguente comando:<pre>./cqlreplicator --state request-stop --tiles 8 \                         <br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \     <br />                --region us-west-2 \                     <br />                --src-keyspace source_keyspace --src-table source_table</pre>Per interrompere immediatamente il processo di migrazione, utilizza la console AWS Glue. | AWS DevOps | 

### Eliminazione
<a name="clean-up"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Eliminare le risorse distribuite. | Il seguente comando eliminerà il job AWS Glue, il connettore, il bucket S3 e la tabella Keyspaces: `ledger`<pre>./cqlreplicator --state cleanup --landing-zone s3://cql-replicator-1234567890-us-west-2</pre> | AWS DevOps | 

## risoluzione dei problemi
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| I job di AWS Glue non sono riusciti e hanno restituito un errore di memoria esaurita (OOM). | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | 

## Risorse correlate
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-resources"></a>
+ [CQLReplicator con AWS Glue README.MD](https://github.com/aws-samples/cql-replicator/blob/main/glue/README.MD)
+ [Documentazione AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)
+ [Documentazione di Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/what-is-keyspaces.html)
+ [Apache Cassandra](https://cassandra.apache.org/_/index.html)

## Informazioni aggiuntive
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-additional"></a>

**Considerazioni sulla migrazione**

Puoi utilizzare AWS Glue per migrare il carico di lavoro di Cassandra su Amazon Keyspaces, mantenendo al contempo i database di origine Cassandra completamente funzionanti durante il processo di migrazione. Una volta completata la replica, puoi scegliere di trasferire le tue applicazioni su Amazon Keyspaces con un ritardo di replica minimo (meno di minuti) tra il cluster Cassandra e Amazon Keyspaces. Per mantenere la coerenza dei dati, puoi anche utilizzare una pipeline simile per replicare i dati nel cluster Cassandra da Amazon Keyspaces.

**Scrivi calcoli unitari**

Ad esempio, considera che intendi scrivere 500.000.000 con la dimensione della riga 1 KB nell'arco di un'ora. Il numero totale di unità di scrittura Amazon Keyspaces (WCUs) richieste si basa su questo calcolo:

`(number of rows/60 mins 60s) 1 WCU per row = (500,000,000/(60*60s) * 1 WCU) = 69,444 WCUs required`

69.444 WCUs al secondo è la tariffa per 1 ora, ma potresti aggiungere un po' di protezione per le spese generali.  Ad esempio, `69,444 * 1.10 = 76,388 WCUs` ha spese generali del 10%.

**Crea uno spazio chiave utilizzando CQL**

Per creare uno spazio chiave utilizzando CQL, esegui i seguenti comandi:

```
CREATE KEYSPACE target_keyspace WITH replication = {'class': 'SingleRegionStrategy'}
CREATE TABLE target_keyspace.target_table ( userid uuid, level text, gameid int, description text, nickname text, zip text, email text, updatetime text, PRIMARY KEY (userid, level, gameid) ) WITH default_time_to_live = 0 AND CUSTOM_PROPERTIES = {'capacity_mode':{ 'throughput_mode':'PROVISIONED', 'write_capacity_units':76388, 'read_capacity_units':3612 }} AND CLUSTERING ORDER BY (level ASC, gameid ASC)
```

# Esegui la migrazione di Oracle Business Intelligence 12c al cloud AWS dai server locali
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers"></a>

*Showunmi Lanre (Lan-Ray) e Patrick Huang, Amazon Web Services*

## Riepilogo
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-summary"></a>

Questo modello mostra come migrare [Oracle Business Intelligence Enterprise Edition 12c](https://www.oracle.com/business-analytics/business-intelligence/technologies/bi-enterprise-edition.html) dai server locali al cloud AWS utilizzando AWS. CloudFormation Descrive inoltre come utilizzare altri servizi AWS per implementare componenti Oracle BI 12c che offrono alta disponibilità, sicurezza, flessibilità e capacità di scalabilità dinamica.

Per un elenco di best practice relative alla migrazione di Oracle BI 12c al cloud AWS, consulta la sezione **Informazioni aggiuntive** di questo modello.

**Nota**  
È consigliabile eseguire più migrazioni di test prima di trasferire i dati Oracle BI 12c esistenti sul cloud. Questi test ti aiutano a perfezionare il tuo approccio alla migrazione, a identificare e risolvere potenziali problemi e a stimare i requisiti di inattività con maggiore precisione.

## Prerequisiti e limitazioni
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo
+ Connettività di rete sicura tra i server locali e AWS tramite i servizi [AWS Virtual Private Network (AWS VPN)](https://aws.amazon.com/vpn/) o [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)
+ Licenze software per il tuo sistema operativo Oracle, Oracle BI 12c, Oracle Database, Oracle WebLogic Server e Oracle HTTP Server

**Limitazioni**

Per informazioni sui limiti delle dimensioni di storage, consulta la documentazione di [Amazon Relational Database Service (Amazon RDS) per](https://aws.amazon.com/rds/oracle/features/) Oracle.

**Versioni del prodotto**
+ Oracle Business Intelligence Enterprise Edition 12c
+ Oracle WebLogic Server 12c
+ Oracle HTTP Server 12c
+ Oracle Database 12c (o versione successiva)
+ Oracle Java SE 8

## Architecture
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-architecture"></a>

Il diagramma seguente mostra un'architettura di esempio per l'esecuzione di componenti Oracle BI 12c nel cloud AWS:

![\[Architettura di esempio per l'esecuzione di componenti Oracle BI 12c nel cloud AWS.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/8bb72df1-7546-4208-bc70-5789767e3600/images/aae8f8f3-8125-4868-a8e5-eac1cc42812f.png)


 

Questo diagramma mostra la seguente architettura:

1. Amazon Route 53 fornisce la configurazione DNS (Domain Name Service).

1. Elastic Load Balancing (ELB) distribuisce il traffico di rete per migliorare la scalabilità e la disponibilità dei componenti di Oracle BI 12c su più zone di disponibilità.

1. I gruppi Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling ospitano i server HTTP Oracle, il server Weblogic Admin e i server BI gestiti in più zone di disponibilità.

1. Amazon Relational Database Service (Amazon RDS) per database Oracle archivia i metadati del server BI su più zone di disponibilità.

1. Amazon Elastic File System (Amazon EFS) è montato su ogni componente di Oracle BI 12c per lo storage condiviso di file.

**Stack tecnologico**
+ Amazon Elastic Block Store (Amazon EBS)
+ Amazon Elastic Compute Cloud (Amazon EC2)
+ Amazon Elastic File System (Amazon EFS)
+ Amazon RDS per Oracle
+ AWS Certificate Manager (ACM)
+ Elastic Load Balancing (ELB)
+ Oracle BI 12c
+ Oracle WebLogic Server 12c
+ Server HTTP Oracle (OHS)

## Tools (Strumenti)
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-tools"></a>
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) ti CloudFormation aiuta a configurare le risorse AWS, effettuarne il provisioning in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita su account e regioni AWS.
+ [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) ti aiuta a creare, archiviare e rinnovare certificati e chiavi SSL/TLS X.509 pubblici e privati che proteggono i tuoi siti Web e le tue applicazioni AWS.
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) ti aiuta a migrare gli archivi di dati nel cloud AWS o tra combinazioni di configurazioni cloud e locali.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/?id=docs_gateway) fornisce capacità di calcolo scalabile nel cloud AWS. Puoi avviare tutti i server virtuali di cui hai bisogno e scalarli rapidamente verso l'alto o verso il basso.
+ [Amazon EC2 Auto Scaling](https://aws.amazon.com/ec2/autoscaling/) ti aiuta a mantenere la disponibilità delle applicazioni e ti consente di aggiungere o rimuovere automaticamente EC2 istanze Amazon in base alle condizioni da te definite. 
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) ti aiuta a creare e configurare file system condivisi nel cloud AWS.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) distribuisce il traffico di applicazioni o di rete in entrata su più destinazioni. Ad esempio, puoi distribuire il traffico tra istanze Amazon Elastic Compute Cloud (Amazon EC2), contenitori e indirizzi IP in una o più zone di disponibilità.
+ [Amazon Relational Database Service (Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)) ti aiuta a configurare, gestire e scalare un database relazionale nel cloud AWS.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ti aiuta a lanciare le risorse AWS in una rete virtuale che hai definito. Questa rete virtuale è simile a una rete tradizionale che gestiresti nel tuo data center, con i vantaggi dell'utilizzo dell'infrastruttura scalabile di AWS.
+ [Oracle Data Pump](https://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_overview.htm) ti aiuta a spostare dati e metadati da un database all'altro a velocità elevate.
+ [Oracle Fusion Middleware](https://www.oracle.com/middleware/technologies/business-intelligence-v12214-downloads.html) è una suite di strumenti di sviluppo di applicazioni e soluzioni di integrazione per la gestione delle identità, la collaborazione e la reportistica di business intelligence.
+ [Oracle](https://www.oracle.com/integration/goldengate/#:~:text=OCI%20GoldenGate%20is%20a%20real,in%20the%20Oracle%20Cloud%20Infrastructure.) ti GoldenGate aiuta a progettare, eseguire, orchestrare e monitorare la replica dei dati e le soluzioni di elaborazione dei dati in streaming nell'infrastruttura Oracle Cloud.
+ [Oracle WebLogic Scripting Tool (WLST)](https://docs.oracle.com/middleware/12213/cross/wlsttasks.htm) fornisce un'interfaccia a riga di comando che consente di scalare orizzontalmente i cluster. WebLogic 

## Epiche
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-epics"></a>

### Valuta l'ambiente di origine
<a name="assess-the-source-environment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Raccogli informazioni sull'inventario del software. | Identifica le versioni e i livelli di patch per ciascuno dei componenti software del tuo stack tecnologico di origine, inclusi i seguenti:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architetto della migrazione, architetto delle soluzioni, proprietario dell'applicazione, amministratore di Oracle BI | 
| Raccogli informazioni sull'inventario di calcolo e storage. | Nel tuo ambiente di origine, esamina le metriche di utilizzo attuali e storiche per quanto segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html)Assicurati di tenere conto dei picchi storici di utilizzo. | Architetto della migrazione, architetto delle soluzioni, proprietario dell'applicazione, amministratore di Oracle BI, amministratore di sistema | 
| Raccogli informazioni sull'architettura dell'ambiente di origine e sui relativi requisiti. | Acquisite una conoscenza completa dell'architettura dell'ambiente di origine e dei relativi requisiti, inclusa la conoscenza di quanto segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architetto della migrazione, architetto delle soluzioni, proprietario dell'applicazione, amministratore di Oracle BI | 
| Identifica le fonti di dati Java Database Connectivity (JDBC). | Raccogli informazioni sulle fonti di dati e sui driver JDBC del tuo ambiente di origine per ogni motore di database che utilizza. | Architetto della migrazione, proprietario dell'applicazione, amministratore di Oracle BI, ingegnere o amministratore del database | 
| Raccogli informazioni sulle impostazioni specifiche dell'ambiente. | Raccogli informazioni su impostazioni e configurazioni specifiche dell'ambiente di origine, tra cui:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architetto della migrazione, architetto delle soluzioni, proprietario dell'applicazione, amministratore di Oracle BI | 
| Identifica eventuali dipendenze da altre applicazioni. | Raccogli informazioni sulle integrazioni nel tuo ambiente di origine che creano dipendenze con altre applicazioni.Assicurati di identificare eventuali integrazioni LDAP (Lightweight Directory Access Protocol) e altri requisiti di rete. | Architetto della migrazione, architetto delle soluzioni, proprietario dell'applicazione, amministratore di Oracle BI | 

### Progetta il tuo ambiente di destinazione
<a name="design-your-target-environment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un documento di progettazione di alto livello. | Crea un documento di progettazione architettonica di destinazione. Assicuratevi di utilizzare le informazioni raccolte durante la valutazione dell'ambiente di origine per elaborare il documento di progettazione. | Architetto delle soluzioni, architetto delle applicazioni, ingegnere del database, architetto della migrazione | 
| Ottenere l'approvazione per il documento di progettazione. | Rivedi il documento di progettazione con le parti interessate e ottieni le approvazioni richieste. | Proprietario dell'applicazione o del servizio, architetto delle soluzioni, architetto dell'applicazione | 

### Implementa l'infrastruttura
<a name="deploy-the-infrastructure"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Prepara il codice dell'infrastruttura in CloudFormation. | Crea CloudFormation modelli per effettuare il provisioning della tua infrastruttura Oracle BI 12c nel cloud AWS.Per ulteriori informazioni, consulta [Working with AWS CloudFormation templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) nella *AWS CloudFormation User Guide*.È consigliabile creare CloudFormation modelli modulari per ogni livello di Oracle BI 12c, anziché un modello di grandi dimensioni per tutte le risorse. Per ulteriori informazioni sulle CloudFormation best practice, consulta [8 best practice per automatizzare le distribuzioni con AWS CloudFormation sul blog AWS](https://aws.amazon.com/blogs/infrastructure-and-automation/best-practices-automating-deployments-with-aws-cloudformation/). | Architetto dell'infrastruttura cloud, architetto delle soluzioni, architetto delle applicazioni | 
| Scarica il software richiesto. | DDownload il seguente software insieme alle versioni e alle patch richieste dal [sito Web di Oracle](https://www.oracle.com/):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architetto della migrazione, ingegnere del database, architetto delle applicazioni | 
| Preparare gli script di installazione. | Crea script di installazione software che eseguano un'installazione invisibile all'utente. Questi script semplificano l'automazione della distribuzione.Per ulteriori informazioni, vedere [OBIEE 12c: Come eseguire](https://support.oracle.com/knowledge/Enterprise%20Performance%20Management%20and%20Business%20Intelligence/2267490_1.html) un'installazione silenziosa? sul sito Oracle Support. È necessario un account Oracle Support per visualizzare la documentazione. | Architetto della migrazione, ingegnere del database, architetto dell'applicazione | 
| Crea un'AMI Linux supportata da Amazon EBS per i tuoi livelli web e applicativi. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architetto della migrazione, ingegnere di database, architetto delle applicazioni | 
| Avvia la tua infrastruttura AWS utilizzando CloudFormation. | Distribuisci i livelli web e applicativi di Oracle BI 12c in moduli utilizzando i CloudFormation modelli che hai creato.Per istruzioni, consulta [Getting started with AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html) nella *AWS CloudFormation User Guide*. | Architetto dell'infrastruttura cloud, architetto delle soluzioni, architetto delle applicazioni | 

### Esegui la migrazione di Oracle BI 12c ad AWS utilizzando una nuova installazione
<a name="migrate-oracle-bi-12c-to-aws-by-using-a-fresh-installation"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Prepara il software richiesto. | Posiziona il software richiesto in una posizione accessibile alle EC2 istanze Amazon. Ad esempio, puoi eseguire lo stage del software in Amazon S3 o in un'altra EC2 istanza Amazon accessibile ai tuoi server Web e applicativi. | Architetto della migrazione, architetto di Oracle BI, architetto dell'infrastruttura cloud, architetto delle soluzioni, architetto delle applicazioni | 
| Prepara il database del repository per l'installazione di Oracle BI 12c. | Crea schemi Oracle BI 12c eseguendo l'[Oracle Repository Creation Utility (RCU)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Resources.RCU.html#Oracle.Resources.RCU.Installing) su una nuova istanza di database [Amazon RDS for Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html). | Architetto dell'infrastruttura cloud, architetto delle soluzioni, architetto delle applicazioni, architetto della migrazione, architetto di Oracle BI | 
| Installa Oracle Fusion Middleware 12c e Oracle BI 12c. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architetto della migrazione, Oracle BI Architect | 
| Configura il tuo dominio Oracle WebLogic Server per Oracle BI 12c. | Configura il tuo dominio Oracle BI 12c come distribuzione non in cluster. Per ulteriori informazioni, vedere [Configurazione del dominio BI](https://docs.oracle.com/middleware/bi12214/lcm/BIEDG/GUID-FD80C4C4-A2E9-4190-8B6A-7AD659D8FBE2.htm#BIEDG-GUID-D4FC2F0A-88B0-453C-BF14-17D365018252) nella *Oracle Fusion Middleware Enterprise Deployment Guide per Oracle* Business Intelligence. | Architetto della migrazione, Oracle BI Architect | 
| Esegui la scala orizzontale con Oracle BI 12c. | Ridimensiona orizzontalmente il singolo nodo fino al numero di nodi desiderato. Per ulteriori informazioni, vedere [Scaling out Oracle Business Intelligence nella Oracle](https://docs.oracle.com/middleware/bi12214/lcm/BIEDG/GUID-B7BEA45C-A8C0-4591-B748-FC35C587DAE0.htm#BIEDG-GUID-B7BEA45C-A8C0-4591-B748-FC35C587DAE0) *Fusion Middleware Enterprise Deployment Guide for Oracle* Business Intelligence. | Architetto della migrazione, Oracle BI Architect | 
| Installare Oracle HTTP Server 12c. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architetto della migrazione, Oracle BI Architect | 
| Configura i sistemi di bilanciamento del carico per la terminazione SSL. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architetto dell'infrastruttura cloud, architetto della migrazione | 
| Migra gli artefatti dei metadati di business intelligence su AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architetto della migrazione, Oracle BI Architect | 
| Esegui attività successive alla migrazione. | Dopo aver importato i file BAR, effettuate le seguenti operazioni:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architetto della migrazione, Oracle BI Architect | 

### Prova il nuovo ambiente
<a name="test-the-new-environment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Prova il nuovo ambiente Oracle BI 12c. | Esegui end-to-end test sul nuovo ambiente Oracle BI 12c. Usa l'automazione il più possibile.Alcuni esempi di attività di test includono quanto segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html)Effettuare test e convalide aggiuntivi, se necessario. | Architetto della migrazione, architetto delle soluzioni, proprietario dell'applicazione, amministratore di Oracle BI | 

### Passa al nuovo ambiente
<a name="cut-over-to-the-new-environment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Disconnetti il traffico all'ambiente Oracle BI 12c locale. | Alla finestra di apertura stabilita, interrompi tutto il traffico verso l'ambiente Oracle BI 12c locale. | Architetto della migrazione, architetto delle soluzioni, proprietario dell'applicazione, amministratore di Oracle BI | 
| Risincronizza il nuovo database del repository Oracle BI 12c con il database di origine. | Risincronizza il database del repository Amazon RDS Oracle Oracle BI 12c con il database locale.Per sincronizzare i database, puoi utilizzare un [aggiornamento di Oracle Data Pump](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.DataPump.html) o un CDC [(change data capture) di AWS DMS](https://aws.amazon.com/blogs/database/migrating-oracle-databases-with-near-zero-downtime-using-aws-dms/). | Amministratore Oracle BI, ingegnere/amministratore del database | 
| Passa il tuo Oracle BI 12c URLs in modo che punti al nuovo ambiente AWS. | Aggiorna Oracle BI 12c URLs sui tuoi server DNS interni in modo che puntino alla nuova installazione AWS. | Architetto della migrazione, architetto delle soluzioni, proprietario dell'applicazione, amministratore di Oracle BI | 
| Monitora il nuovo ambiente. | Monitora il nuovo ambiente Oracle BI 12c utilizzando uno dei seguenti strumenti:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Amministratore Oracle BI, ingegnere/amministratore del database, amministratore delle applicazioni | 
| Ottieni l'approvazione del progetto. | Rivedi i risultati dei test con le parti interessate e ottieni le approvazioni necessarie per concludere la migrazione. | Proprietario dell'applicazione, proprietario del servizio, architetto dell'infrastruttura cloud, architetto della migrazione, architetto Oracle BI | 

## Risorse correlate
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-resources"></a>
+ [Utilizzo della Oracle Repository Creation Utility su RDS per Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Resources.RCU.html) (*Amazon RDS* User Guide)
+ [Oracle su Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) (Guida per *l'utente di Amazon RDS*)
+ [Oracle WebLogic Server 12c su AWS](https://d1.awsstatic.com/whitepapers/Oracle-WebLogic-12c-on-AWS.pdf) (white paper AWS)
+ [Implementazione di Oracle Business Intelligence per l'alta disponibilità](https://docs.oracle.com/middleware/1221/biee/BIESG/highavail.htm#BIESG1584) (Oracle Help Center)
+ [File Oracle Business Intelligence Application Archive (BAR)](https://docs.oracle.com/middleware/bi12214/biee/BIESG/GUID-7FCD90A3-E005-49BF-902F-30FBF9B41B07.htm#BIESG2889) (Centro assistenza Oracle)
+ [Come migrare OBI 12c tra ambienti (Oracle Support](https://support.oracle.com/knowledge/Enterprise%20Performance%20Management%20and%20Business%20Intelligence/2203360_1.html)) 

## Informazioni aggiuntive
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-additional"></a>

Di seguito è riportato un elenco di best practice relative alla migrazione di Oracle BI 12c al cloud AWS.

**Database di repository**

È consigliabile ospitare gli schemi di database Oracle BI 12c su un'istanza Amazon RDS for Oracle. Questo tipo di istanza offre una capacità ridimensionabile e conveniente, automatizzando al contempo le attività di amministrazione, come il provisioning dell'hardware, la configurazione del database, l'applicazione di patch e i backup.

Per ulteriori informazioni, consulta [Using the Oracle Repository Creation Utility on RDS for Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Resources.RCU.html) nella *Amazon RDS* User Guide.

**Livelli Web e applicativi**

Le [ EC2 istanze Amazon ottimizzate per la memoria](https://aws.amazon.com/ec2/instance-types/) sono spesso adatte per i server Oracle BI 12c. Qualunque sia il tipo di istanza scelto, assicurati che le istanze di cui effettui il provisioning soddisfino i requisiti di utilizzo della memoria del sistema. Inoltre, assicurati di [configurare una dimensione dell'heap WebLogic Java Virtual Machine (JVM) sufficiente](https://docs.oracle.com/cd/E49933_01/server.770/es_install/src/tins_postinstall_jvm_heap.html#:~:text=The%20default%20JVM%20heap%20size%20for%20WebLogic%20is%203GB.,file%20for%20Linux%20or%20setDomainEnv.) in base alla memoria disponibile dell' EC2 istanza Amazon.

**Archiviazione locale**

L'I/O svolge un ruolo importante nelle prestazioni complessive dell'applicazione Oracle BI 12c. Amazon Elastic Block Store (Amazon EBS) offre diverse classi di storage ottimizzate per diversi modelli di carico di lavoro. Assicurati di scegliere un tipo di volume Amazon EBS adatto al tuo caso d'uso.

Per ulteriori informazioni sui tipi di volume EBS, consulta le [caratteristiche di Amazon EBS nella documentazione](https://aws.amazon.com/ebs/features/) di Amazon EBS.

**Archiviazione condivisa**

Un dominio Oracle BI 12c in cluster richiede uno storage condiviso per le seguenti risorse:
+ File di configurazione
+ Directory di dati singleton (SDD) di Oracle BI 12c
+ Cache globale Oracle
+ Script di Oracle BI Scheduler
+ File binari di Oracle Server WebLogic 

Puoi soddisfare questo requisito di storage condiviso utilizzando [Amazon EFS](https://aws.amazon.com/efs/), che fornisce un file system NFS (Network File System) elastico scalabile e completamente gestito.

*Ottimizzazione delle prestazioni di storage condiviso*

**Amazon EFS offre due [modalità di throughput](https://docs.aws.amazon.com/efs/latest/ug/performance.html#throughput-modes): **Provisioned e Bursting**.** **Il servizio offre anche due [modalità di prestazioni](https://docs.aws.amazon.com/efs/latest/ug/performance.html#performancemodes): **General Purpose** e Max I/O.**

Per ottimizzare le prestazioni, inizia testando i carichi di lavoro nella modalità prestazioni **General Purpose** e nella modalità **Provisioned throughput**. L'esecuzione di questi test ti aiuterà a determinare se tali modalità di base sono sufficienti a soddisfare i livelli di servizio desiderati.

Per ulteriori informazioni, consulta le [prestazioni di Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/performance.html) nella *Guida per l'utente di Amazon EFS*.

**Disponibilità e disaster recovery**

È consigliabile distribuire i componenti di Oracle BI 12c su più zone di disponibilità per proteggere tali risorse in caso di guasto di una zona di disponibilità. Di seguito è riportato un elenco di best practice di disponibilità e disaster recovery per specifiche risorse Oracle BI 12c ospitate nel cloud AWS:
+ Database di **repository Oracle BI 12c: distribuisci un'istanza di database** Amazon RDS Multi-AZ nel tuo database di repository Oracle BI 12c. In una distribuzione Multi-AZ, Amazon RDS effettua automaticamente il provisioning e mantiene una replica sincrona in standby in una zona di disponibilità diversa. L'esecuzione di un'istanza di database di repository Oracle BI 12c nelle zone di disponibilità può migliorare la disponibilità durante la manutenzione pianificata del sistema e aiutare a proteggere i database dai guasti delle istanze e delle zone di disponibilità.
+ **Server gestiti Oracle BI 12c**: per ottenere la tolleranza agli errori, è consigliabile distribuire i componenti di sistema Oracle BI 12c sui server gestiti in un gruppo Amazon EC2 Auto Scaling configurato per estendersi su più zone di disponibilità. [Auto Scaling sostituisce le istanze difettose sulla base dei controlli sanitari di Amazon. EC2 ](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) In caso di guasto della zona di disponibilità, i server HTTP Oracle continuano a indirizzare il traffico verso i server gestiti nella zona di disponibilità funzionante. Quindi, Auto Scaling avvia le istanze per tenere il passo con i requisiti di numero di host. Si consiglia di attivare la replica dello stato della sessione HTTP per garantire un failover regolare delle sessioni esistenti sui server gestiti funzionanti.
+ **Administration Server Oracle BI 12c:** per assicurarti che il tuo Administration Server abbia un'elevata disponibilità, ospitalo in un gruppo Amazon EC2 Auto Scaling configurato per coprire più zone di disponibilità. **Quindi, imposta la dimensione minima e massima del gruppo su 1.** Se si verifica un errore nella zona di disponibilità, Amazon EC2 Auto Scaling avvia un Administration Server sostitutivo in una zona di disponibilità alternativa. Per ripristinare eventuali host sottostanti guasti all'interno della stessa zona di disponibilità, puoi attivare [Amazon EC2 Auto Recovery](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-recover.html).
+ **Server Oracle Web Tier:** è consigliabile associare il server HTTP Oracle al dominio Oracle WebLogic Server. Per un'elevata disponibilità, distribuisci il tuo Oracle HTTP Server in un gruppo Amazon EC2 Auto Scaling configurato per coprire più zone di disponibilità. Quindi, posiziona il server dietro un sistema di bilanciamento del carico elastico ELB. Per fornire una protezione aggiuntiva contro i guasti dell'host, puoi attivare Amazon EC2 Auto Recovery.

**Scalabilità**

L'elasticità del cloud AWS ti aiuta a scalare le applicazioni orizzontalmente o verticalmente in risposta ai requisiti del carico di lavoro.

*Scalabilità verticale*

Per scalare verticalmente la tua applicazione, puoi modificare la dimensione e il tipo delle EC2 istanze Amazon che eseguono i componenti di Oracle BI 12c. Non è necessario sovradimensionare le istanze all'inizio della distribuzione e incorrere in costi inutili. 

*Scalabilità orizzontale*

Amazon EC2 Auto Scaling ti aiuta a scalare orizzontalmente la tua applicazione aggiungendo o rimuovendo automaticamente server gestiti in base ai requisiti del carico di lavoro.

**Nota**  
La scalabilità orizzontale con Amazon EC2 Auto Scaling richiede competenze di scripting e test approfonditi per essere implementata.

**Backup e ripristino**

Di seguito è riportato un elenco di best practice di backup e ripristino per specifiche risorse Oracle BI 12c ospitate nel cloud AWS:
+ **Archivi di metadati di Oracle Business Intelligence: Amazon** RDS crea e salva automaticamente i backup delle istanze di database. Questi backup vengono conservati per un periodo di tempo specificato dall'utente. Assicurati di configurare la durata del backup e le impostazioni di conservazione di Amazon RDS in base ai requisiti di protezione dei dati. Per ulteriori informazioni, consulta la sezione [Backup e ripristino di Amazon RDS](https://aws.amazon.com/rds/features/backup/).
+ **Server gestiti, server di amministrazione e server a livello Web:** assicurati di configurare [gli snapshot di Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html) in base ai requisiti di protezione e conservazione dei dati.
+ **Storage condiviso:** puoi gestire il backup e il ripristino dei file archiviati in Amazon [EFS utilizzando AWS Backup](https://docs.aws.amazon.com/efs/latest/ug/awsbackup.html). Il servizio AWS Backup può anche essere distribuito per gestire centralmente il backup e il ripristino di altri servizi, tra cui Amazon EC2, Amazon EBS e Amazon RDS. Per ulteriori informazioni, consulta [Cos'è AWS Backup?](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) Nella *AWS Backup Developer Guide*.

**Sicurezza e conformità**

Di seguito è riportato un elenco di best practice di sicurezza e servizi AWS che possono aiutarti a proteggere le tue applicazioni Oracle BI 12c nel cloud AWS:
+ **Crittografia a riposo:** Amazon RDS, Amazon EFS e Amazon EBS supportano tutti algoritmi di crittografia standard del settore. Puoi utilizzare [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) per creare e gestire chiavi crittografiche e controllarne l'uso nei servizi AWS e nelle tue applicazioni. Puoi anche configurare [Oracle Transparent Data Encryption (TDE)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.AdvSecurity.html) sull'istanza di database Amazon RDS for Oracle che ospita il tuo database di repository Oracle BI 12c.
+ **Crittografia in transito:** è consigliabile attivare i protocolli SSL o TLS per proteggere i dati in transito tra i vari livelli dell'installazione di Oracle BI 12c. Puoi utilizzare [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) per fornire, gestire e distribuire certificati SSL e TLS pubblici e privati per le tue risorse Oracle BI 12c.
+ **Sicurezza di rete**: assicurati di distribuire le tue risorse Oracle BI 12c in un Amazon VPC con i controlli di accesso appropriati configurati per il tuo caso d'uso. Configura i tuoi gruppi di sicurezza per filtrare il traffico in entrata e in uscita dalle EC2 istanze Amazon su cui è in esecuzione l'installazione. Inoltre, assicurati di configurare le [liste di controllo degli accessi alla rete (NACLs)](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) che consentono o negano il traffico in base a regole definite.
+ **Monitoraggio e registrazione**: puoi usare [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) per tracciare le chiamate API alla tua infrastruttura AWS, incluse le risorse Oracle BI 12c. Questa funzionalità è utile per tenere traccia delle modifiche all'infrastruttura o per condurre un'analisi di sicurezza. Puoi anche utilizzare [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) per visualizzare dati operativi che possono fornirti informazioni utili sulle prestazioni e sullo stato della tua applicazione Oracle BI 12c. Puoi configurare gli allarmi e intraprendere azioni automatiche anche sulla base di tali allarmi. Amazon RDS fornisce strumenti di monitoraggio aggiuntivi, tra cui [Enhanced Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html) e [Performance Insights](https://aws.amazon.com/rds/performance-insights/).

# Migrazione di uno stack ELK su Elastic Cloud su AWS
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws"></a>

*Battulga Purevragcha e Antony Prasad Thevaraj, Amazon Web Services*

*Buday Freddy, Nessuno*

## Riepilogo
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-summary"></a>

[Elastic](https://www.elastic.co/) fornisce servizi da molti anni, e i suoi utenti e clienti in genere gestiscono Elastic autonomamente in sede. [Elastic Cloud](https://www.elastic.co/cloud) [https://www.elastic.co/observability](https://www.elastic.co/observability) Puoi accedere alle soluzioni Elastic con app come Logs, Metrics, APM (monitoraggio delle prestazioni delle applicazioni) e SIEM (informazioni di sicurezza e gestione degli eventi). Puoi utilizzare funzionalità integrate come l'apprendimento automatico, la gestione del ciclo di vita degli indici, Kibana Lens (per le visualizzazioni drag-and-drop).

Quando passi da Elasticsearch autogestito a Elastic Cloud, il servizio Elasticsearch si occupa di quanto segue:
+ Fornitura e gestione dell'infrastruttura sottostante
+ Creazione e gestione di cluster Elasticsearch
+ Scalabilità verso l'alto e verso il basso dei cluster
+ Aggiornamenti, patch e acquisizione di istantanee

In questo modo avrai più tempo per concentrarti sulla risoluzione di altre sfide.

Questo modello definisce come migrare Elasticsearch 7.13 locale a Elasticsearch on Elastic Cloud on Amazon Web Services (AWS). Altre versioni potrebbero richiedere lievi modifiche ai processi descritti in questo modello. Per ulteriori informazioni, contatta il tuo rappresentante Elastic.

## Prerequisiti e limitazioni
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-prereqs"></a>

**Prerequisiti**
+ Un [account AWS](https://aws.amazon.com/account/) attivo con accesso ad [Amazon Simple Storage Service](https://aws.amazon.com/s3/) (Amazon S3) per le istantanee
+ Un [collegamento privato sicuro e a larghezza di banda sufficientemente elevata per copiare i file](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html) di dati delle istantanee su Amazon S3
+ [Accelerazione dei trasferimenti Amazon S3](https://aws.amazon.com/s3/transfer-acceleration/)
+ Policy [di Elastic Snapshot](https://www.elastic.co/guide/en/elasticsearch/reference/7.10/getting-started-snapshot-lifecycle-management.html) per garantire che l'inserimento dei dati venga archiviato regolarmente, in un data store locale sufficientemente grande o in uno storage remoto (Amazon S3)

È necessario comprendere le dimensioni delle istantanee e le [politiche del ciclo di vita degli indici di accompagnamento in locale prima di](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-lifecycle-management.html) iniziare la migrazione. [Per ulteriori informazioni, contatta Elastic.](https://www.elastic.co/contact)

**Ruoli e competenze**

Il processo di migrazione richiede anche i ruoli e le competenze descritti nella tabella seguente.


| 
| 
| Ruolo | Competenza | Responsabilità | 
| --- |--- |--- |
| Supporto per le app | Familiarità con Elastic Cloud ed Elastic on-premise | Tutte le attività relative a Elastic | 
| Amministratore di sistema o DBA | Conoscenza approfondita dell'ambiente Elastic locale e della sua configurazione | La capacità di fornire storage, installare e utilizzare l'AWS Command Line Interface (AWS CLI) e identificare tutte le fonti di dati che alimentano Elastic in locale | 
| Amministratore di rete | Conoscenza della connettività, della sicurezza e delle prestazioni di rete on-premise e AWS | Creazione di collegamenti di rete dall'locale ad Amazon S3, con una comprensione della larghezza di banda della connettività | 

**Limitazioni**
+ Elasticsearch on Elastic Cloud è disponibile solo nelle [regioni AWS supportate (settembre 2021](https://www.elastic.co/guide/en/cloud/current/ec-regions-templates-instances.html#ec-aws_regions)).

**Versioni del prodotto**
+ Elasticsearch 7.13

## Architecture
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-architecture"></a>

**Stack tecnologico di origine**

Elasticsearch 7.13 o versione successiva locale:
+ Snapshot cluster
+ Indicizza le istantanee
+ Configurazione [Beats](https://www.elastic.co/beats/)

**Architettura della tecnologia di origine**

Il diagramma seguente mostra una tipica architettura locale con diversi metodi di ingestione, tipi di nodi e Kibana. I diversi tipi di nodi riflettono il cluster Elasticsearch, i ruoli di autenticazione e visualizzazione.

![\[Processo in otto fasi che include Beats, Logstash, Elasticsearch e Kibana.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/23d1b437-22ff-420e-80ac-834f1116d234/images/937c4d22-429f-4673-86df-ae491d68389c.png)


1. Ingestione da Beats a Logstash

1. Ingestione da Beats alla coda di messaggistica di Apache Kafka

1. Ingestione da Filebeat a Logstash

1. Inserimento dalla coda di messaggistica di Apache Kafka a Logstash

1. Ingestione da Logstash a un cluster Elasticsearch

1. Cluster Elasticsearch

1. Nodo di autenticazione e notifica

1. Nodi Kibana e blob

**Stack tecnologico Target**

Elastic Cloud viene distribuito sul tuo account SaaS (Software as a Service) in più regioni AWS con replica tra cluster.
+ Snapshot cluster
+ Indicizza le istantanee
+ Configurazioni Beats
+ Cloud elastico
+ Network Load Balancer
+ Amazon Route 53
+ Simple Storage Service (Amazon S3)

**Architettura Target**

![\[Gli endpoint Route 53 indirizzano il traffico verso ambienti Multi-AZ in due diverse regioni.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/23d1b437-22ff-420e-80ac-834f1116d234/images/16cbac49-0adb-4469-b546-ae4b1ca35357.png)


 

L'infrastruttura Elastic Cloud gestita è:
+ Altamente disponibile, essendo presente in più [zone di disponibilità](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) e più regioni AWS.
+ [La regione è tollerante ai guasti perché i dati (indici e istantanee) vengono replicati utilizzando la replica tra cluster Elastic Cloud (CCR)](https://www.elastic.co/guide/en/elasticsearch/reference/7.14/xpack-ccr.html)
+ [Archiviazione, perché le istantanee vengono archiviate in Amazon S3](https://aws.amazon.com/s3/?p=pm&c=s3&z=4)
+ [Tolleranza alle partizioni di rete grazie a una combinazione di [Network Load Balancer e Route 53](https://aws.amazon.com/elasticloadbalancing/network-load-balancer/)](https://aws.amazon.com/route53/)
+ [https://www.elastic.co/apm/](https://www.elastic.co/apm/)

**Fasi di migrazione di alto livello**

Elastic ha sviluppato una propria metodologia prescrittiva per la migrazione di Elastic Cluster on-premise a Elastic Cloud. La metodologia Elastic è direttamente allineata e complementare alle linee guida e alle best practice sulla migrazione di AWS, tra cui [Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/?wa-lens-whitepapers.sort-by=item.additionalFields.sortDate&wa-lens-whitepapers.sort-order=desc) e AWS Migration [Acceleration Program](https://aws.amazon.com/migration-acceleration-program/) (MAP). In genere, le tre fasi di migrazione AWS sono le seguenti:
+ Valutazione
+ Mobilitazione
+ Migrazione e modernizzazione

Elastic segue fasi di migrazione simili con una terminologia complementare:
+ Avviare
+ Pianificazione
+ Attuare
+ Consegnare
+ Chiudi

Elastic utilizza la metodologia Elastic Implementation per facilitare la consegna dei risultati del progetto. Ciò è stato progettato in modo inclusivo per garantire che Elastic, i team di consulenza e i team dei clienti collaborino con chiarezza per fornire congiuntamente i risultati attesi.

La metodologia Elastic combina la tradizionale fase a cascata con Scrum nella fase di implementazione. Le configurazioni dei requisiti tecnici vengono fornite in modo iterativo in modo collaborativo, riducendo al minimo i rischi.

![\[Diagramma che mostra le cinque fasi della metodologia di implementazione elastica.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/23d1b437-22ff-420e-80ac-834f1116d234/images/b041c61d-980e-49a0-a721-791c20edde64.png)


 

## Tools (Strumenti)
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-tools"></a>

**Servizi AWS**
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) — Amazon Route 53 è un servizio Web DNS (Domain Name System) ad alta disponibilità e scalabilità. Puoi utilizzare Route 53 per eseguire tre funzioni principali in qualsiasi combinazione: registrazione dominio, routing DNS e controllo dell'integrità.
+ [Amazon S3 — Amazon Simple](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) Storage Service (Amazon S3) è un servizio di storage di oggetti. È possibile utilizzare Amazon S3 per memorizzare e recuperare qualsiasi volume di dati, in qualunque momento e da qualunque luogo tramite il Web. Questo modello utilizza un bucket S3 e [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration-examples.html) Transfer Acceleration.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html): Elastic Load Balancing distribuisce automaticamente il traffico in entrata su più destinazioni, EC2 come istanze, contenitori e indirizzi IP, in una o più zone di disponibilità.

**Altri strumenti**
+ [Beats: Beats](https://www.elastic.co/beats/) invia dati da Logstash o Elasticsearch
+ [Elastic Cloud — Elastic Cloud](https://www.elastic.co/cloud/) è un servizio gestito per l'hosting di Elasticsearch.
+ [Elasticsearch](https://www.elastic.co/elasticsearch/): Elasticsearch è un motore di ricerca e analisi che utilizza Elastic Stack per archiviare centralmente i dati per ricerche e analisi su larga scala. Questo modello utilizza anche la creazione di istantanee e la replica tra cluster.
+ [Logstash](https://www.elastic.co/logstash/): Logstash è una pipeline di elaborazione dati lato server che acquisisce dati da più fonti, li trasforma e quindi li invia all'archivio dati.

## Epiche
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-epics"></a>

### Prepara la migrazione
<a name="prepare-the-migration"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Identifica i server che eseguono la soluzione Elastic locale. | Verifica che la migrazione elastica sia supportata. | Proprietario dell'app | 
| Comprendi la configurazione del server locale. | Per comprendere la configurazione del server necessaria per gestire correttamente i carichi di lavoro in locale, individua l'ingombro hardware del server, la configurazione di rete e le caratteristiche di storage attualmente in uso | Supporto per app | 
| Raccogli informazioni sull'account utente e sull'app. | Identifica i nomi utente e i nomi delle app utilizzati dall'ambiente Elastic locale. | Amministratore di sistema, supporto per le app | 
| Configurazione di Document Beats e data shipper. | Per documentare le configurazioni, consulta le fonti di dati e i sink esistenti. Per ulteriori informazioni, consulta la documentazione di [Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html). | Supporto per le app | 
| Determina la velocità e il volume dei dati. | Stabilisci una linea di base per la quantità di dati gestita dal cluster. | Amministratore di sistema, supporto per le app | 
| Documenta gli scenari RPO e RTO. | Documenta gli scenari di Recovery Point Objective (RPO) e Recovery Time Objective (RTO) in termini di interruzioni e accordi sui livelli di servizio (). SLAs | Proprietario dell'app, amministratore di sistema, supporto dell'app | 
| Determina le impostazioni ottimali del ciclo di vita delle istantanee. | Definisci la frequenza con cui i dati devono essere protetti utilizzando istantanee elastiche *durante* e dopo la migrazione. | Proprietario dell'app, amministratore di sistema, supporto dell'app | 
| Definisci le aspettative prestazionali dopo la migrazione. | Genera metriche sull'aggiornamento attuale e previsto dello schermo, sui tempi di esecuzione delle query e sui comportamenti dell'interfaccia utente. | Amministratore di sistema, supporto per le app | 
| Documenta i requisiti di accesso a Internet, trasporto, larghezza di banda e disponibilità. | Verifica la velocità, la latenza e la resilienza delle connessioni Internet per copiare le istantanee su Amazon S3. | Amministratore di rete | 
| Documenta i costi correnti del runtime locale per Elastic. | Assicurati che il dimensionamento dell'ambiente AWS di destinazione sia progettato per offrire prestazioni elevate e un ottimo rapporto qualità-prezzo. | DBA, amministratore di sistema, supporto per le app | 
| Identifica le esigenze di autenticazione e autorizzazione. | Le funzionalità di sicurezza Elastic Stack forniscono funzionalità integrate come Lightweight Directory Access Protocol (LDAP), Security Assertion Markup Language (SAML) e OpenID Connect (OIDC). | DBA, amministratore di sistema, supporto delle app | 
| Comprendi i requisiti normativi specifici in base alla posizione geografica. | Assicurati che i dati vengano esportati e crittografati in base ai tuoi requisiti e a qualsiasi requisito nazionale pertinente. | DBA, amministratore di sistema, supporto per le app | 

### Implementa la migrazione
<a name="implement-the-migration"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Prepara l'area di staging su Amazon S3.  | Per ricevere istantanee su Amazon S3[, crea un bucket S3 e un](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) ruolo AWS Identity and Access Management (IAM) temporaneo con accesso completo al bucket appena creato. Per ulteriori informazioni, consulta [Creazione di un ruolo per delegare le autorizzazioni a un](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) utente IAM. Utilizza AWS Security Token Service per [richiedere credenziali di sicurezza temporanee](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html). Mantieni protetti l'ID della chiave di accesso, la chiave di accesso segreta e il token di sessione.Abilita [Amazon S3 Transfer](https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration-examples.html) Acceleration nel bucket. | Amministratore AWS | 
| Installa l'interfaccia a riga di comando di AWS e il plug-in Amazon S3 in locale. | Su ogni nodo Elasticsearch, esegui il comando seguente.<pre>sudo bin/elasticsearch-plugin install repository-s3</pre>Quindi riavvia il nodo. | Amministratore AWS | 
| Configura l'accesso al client Amazon S3. | Aggiungi le chiavi create in precedenza eseguendo i seguenti comandi.<pre>elasticsearch-keystore add s3.client.default.access_key</pre><pre>elasticsearch-keystore add s3.client.default.secret_key</pre><pre>elasticsearch-keystore add s3.client.default.session_token</pre> | Amministratore AWS | 
| Registra un repository di istantanee per dati elastici | Usa i [Kibana Dev Tools](https://www.elastic.co/guide/en/kibana/current/console-kibana.html) per indicare al cluster locale locale locale su quale bucket S3 remoto scrivere. | Amministratore AWS | 
| Configura la politica sulle istantanee. | **Per configurare la gestione del ciclo di vita delle istantanee, nella scheda Kibana Policies, scegli la **politica SLM** e definisci quali orari, flussi di dati o indici devono essere inclusi e quali nomi usare.**Configura una policy che acquisisca istantanee frequenti. Le istantanee sono incrementali e fanno un uso efficiente dello storage. Abbina la tua decisione di valutazione della prontezza. Una policy può anche specificare una [policy di conservazione](https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-retention.html) ed eliminare automaticamente le istantanee quando non sono più necessarie. | Supporto per le app | 
| Verifica che le istantanee funzionino. | In Kibana Dev Tools, esegui il seguente comando.<pre>GET _snapshot/<your_repo_name>/_all</pre> | Amministratore AWS, supporto per app,  | 
| Implementa un nuovo cluster su Elastic Cloud.  | [Accedi a Elastic](https://cloud.elastic.co/login?redirectTo=%2Fhome) e scegli un cluster per «osservabilità, ricerca o sicurezza» basato sui risultati della tua attività nella valutazione della fattibilità. | Amministratore AWS, supporto per app | 
| Configura l'accesso al cluster key store. | Il nuovo cluster deve accedere al bucket S3 che memorizzerà le istantanee. In Elasticsearch Service Console, scegli **Sicurezza** e inserisci le chiavi di accesso e le chiavi IAM segrete che hai creato in precedenza. | Amministratore AWS | 
| Configura il cluster ospitato su Elastic Cloud per accedere ad Amazon S3. | Configura un nuovo accesso del cluster all'archivio di snapshot creato in precedenza in Amazon S3. Usando Kibana, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-an-elk-stack-to-elastic-cloud-on-aws.html) | Amministratore AWS, App Support | 
| Verifica il nuovo repository Amazon S3. | Assicurati di poter accedere al tuo nuovo repository ospitato nel cluster Elastic Cloud. | Amministratore AWS | 
| Inizializza il cluster di servizi Elasticsearch. | Sulla Elasticsearch Service Console, inizializza il cluster di servizi Elasticsearch dalla snapshot S3.Esegui i seguenti comandi come POST.<pre>*/_close?expand_wildcards=all</pre><pre>/_snapshot/<your-repo-name>/  <your-snapshot-name>/_restore</pre><pre>*/_open?expand_wildcards=all</pre> | Supporto per app | 

### Completa la migrazione
<a name="complete-the-migration"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Verificare che il ripristino dell'istantanea sia stato eseguito correttamente. | Usando Kibana Dev Tools, esegui il seguente comando.<pre>GET _cat/indices</pre> | Supporto per le app | 
| Ridistribuire i servizi di ingestione. | Connect gli endpoint per Beats e Logstash al nuovo endpoint del servizio Elasticsearch. | Supporto per le app | 

### Testa l'ambiente del cluster e pulisci
<a name="test-the-cluster-environment-and-clean-up"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Convalida l'ambiente del cluster. | Dopo la migrazione dell'ambiente cluster elastico locale su AWS, puoi connetterti ad esso e utilizzare i tuoi strumenti di test di accettazione degli utenti (UAT) per convalidare il nuovo ambiente. | Supporto per le app | 
| Pulisci le risorse. | Dopo aver verificato la corretta migrazione del cluster, rimuovi il bucket S3 e il ruolo IAM utilizzato per la migrazione. | Amministratore AWS | 

## Risorse correlate
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-resources"></a>

**Riferimenti elastici**
+ [Elastic Cloud](https://www.elastic.co/cloud/)
+ [Elasticsearch e Kibana gestiti su AWS](https://www.elastic.co/elasticsearch/service)
+ [Ricerca aziendale elastica](https://www.elastic.co/enterprise-search)
+ [Integrazioni elastiche](https://www.elastic.co/integrations?search=amazon)
+ [Osservabilità elastica](https://www.elastic.co/observability)
+ [Sicurezza elastica](https://www.elastic.co/security)
+ [Beats](https://www.elastic.co/beats/)
+ [APM elastico](https://www.elastic.co/apm/)
+ [Esegui la migrazione alla gestione del ciclo di vita degli indici](https://www.elastic.co/guide/en/cloud-enterprise/current/ece-migrate-index-management.html)
+ [Abbonamenti elastici](https://www.elastic.co/subscriptions)
+ [Contatta Elastic](https://www.elastic.co/contact)

*Post sul blog Elastic*
+ [Come migrare da Elasticsearch autogestito a Elastic Cloud on AWS (post sul blog](https://www.elastic.co/blog/how-to-migrate-from-self-managed-elasticsearch-to-elastic-cloud-on-aws))
+ [Migrazione a Elastic](https://www.elastic.co/blog/migrating-to-elastic-cloud) Cloud (post sul blog)

*Documentazione elastica*
+ [Tutorial: automatizza i backup con SLM](https://www.elastic.co/guide/en/elasticsearch/reference/7.10/getting-started-snapshot-lifecycle-management.html)
+ [ILM: gestisci il ciclo di vita dell'indice](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-lifecycle-management.html)
+ [Logstash](https://www.elastic.co/guide/en/logstash/current/index.html)
+ [Replica tra cluster (CCR)](https://www.elastic.co/guide/en/elasticsearch/reference/7.14/xpack-ccr.html)
+ [Acquisisci pipeline](https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html)
+ [Esegui richieste API Elasticsearch](https://www.elastic.co/guide/en/kibana/current/console-kibana.html)
+ [Conservazione degli snapshot](https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-retention.html)

*Video e webinar elastici*
+ [Migrazione flessibile al cloud](https://www.youtube.com/watch?v=WbPJi-APZ_Q)
+ [Elastic Cloud: perché i clienti migrano](https://www.elastic.co/webinars/elastic-cloud-why-customers-are-migrating-now) (webinar)

**Riferimenti AWS**
+ [Elastic Cloud su AWS Marketplace](https://aws.amazon.com/marketplace/seller-profile?id=d8f59038-c24c-4a9d-a66d-6711d35d7305)
+ [Interfaccia a riga di comando di AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/setup-aws-cli.html)
+ [AWS Direct Connect](https://aws.amazon.com/directconnect/)
+ [Programma di accelerazione della migrazione AWS](https://aws.amazon.com/migration-acceleration-program/)
+ [Network Load Balancers](https://aws.amazon.com/elasticloadbalancing/network-load-balancer/)
+ [Regioni e zone di disponibilità](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)
+ [Amazon Route 53](https://aws.amazon.com/route53/)
+ [Amazon Simple Storage Service](https://aws.amazon.com/s3/)
+ [Accelerazione dei trasferimenti Amazon S3](https://aws.amazon.com/s3/transfer-acceleration/)
+ [Connessioni VPN](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html)
+ [Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/?wa-lens-whitepapers.sort-by=item.additionalFields.sortDate&wa-lens-whitepapers.sort-order=desc)

## Informazioni aggiuntive
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-additional"></a>

[Se hai intenzione di migrare carichi di lavoro complessi, contatta Elastic Consulting Services.](https://www.elastic.co/consulting/engage) Se hai domande di base relative a configurazioni e servizi, contatta il team di [Elastic Support](mailto:support@elastic.co).

# Migrare i dati verso il Cloud AWS utilizzando Starburst
<a name="migrate-data-to-the-aws-cloud-by-using-starburst"></a>

*Antony Prasad Thevaraj e Suresh Veeragoni, Amazon Web Services*

*Shaun Van Staden, Nessuno*

## Riepilogo
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-summary"></a>

Starburst aiuta ad accelerare il percorso di migrazione dei dati verso Amazon Web Services (AWS) fornendo un motore di query aziendale che riunisce le fonti di dati esistenti in un unico punto di accesso. Puoi eseguire analisi su più fonti di dati per ottenere informazioni preziose, prima di finalizzare qualsiasi piano di migrazione. Senza interrompere l' business-as-usualanalisi, puoi migrare i dati utilizzando il motore Starburst o un'applicazione dedicata di estrazione, trasformazione e caricamento (ETL).

## Prerequisiti e limitazioni
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-prereqs"></a>

**Prerequisiti**
+ Un attivo Account AWS
+ Un cloud privato virtuale (VPC)
+ Un cluster Amazon Elastic Kubernetes Service (Amazon EKS)
+ Un gruppo Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling
+ Un elenco degli attuali carichi di lavoro di sistema che devono essere migrati
+ Connettività di rete dall' AWS ambiente locale

## Architecture
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-architecture"></a>

**Architettura di riferimento**

Il seguente diagramma di architettura di alto livello mostra l'implementazione tipica di Starburst Enterprise in: Cloud AWS

1. Il cluster Starburst Enterprise funziona all'interno del tuo. Account AWS

1. Un utente si autentica utilizzando Lightweight Directory Access Protocol (LDAP) o Open Authorization (OAuth) e interagisce direttamente con il cluster Starburst.

1. Starburst può connettersi a diverse fonti di AWS dati, come AWS Glue Amazon Simple Storage Service (Amazon S3), Amazon Relational Database Service (Amazon RDS) e Amazon Redshift. Starburst offre funzionalità di interrogazione federate su diverse fonti di dati in ambiente cloud Cloud AWS, on-premise o in altri ambienti cloud.

1. Puoi avviare Starburst Enterprise in un cluster Amazon EKS utilizzando i grafici Helm.

1. Starburst Enterprise utilizza i gruppi Amazon Auto EC2 Scaling e le istanze EC2 Amazon Spot per ottimizzare l'infrastruttura.

1. Starburst Enterprise si collega direttamente alle fonti di dati locali esistenti per leggere i dati in tempo reale. Inoltre, se disponi di un'implementazione Starburst Enterprise esistente in questo ambiente, puoi connettere direttamente il tuo nuovo cluster Starburst a questo cluster esistente. Cloud AWS 

![\[Diagramma dell'architettura di alto livello dell'implementazione di Starburst Enterprise nel cloud AWS\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/12ae0463-9029-4a32-9d7b-70cdb5406fb0/images/e9975d3a-f75b-41a2-8c08-5b82539adf8c.png)


Tieni presente quanto segue:
+ Starburst non è una piattaforma di virtualizzazione dei dati. È un motore di query MPP (Massively Parallel Processing) basato su SQL che costituisce la base di una strategia globale di data mesh per l'analisi.
+ Quando Starburst viene distribuito come parte di una migrazione, dispone di una connettività diretta all'infrastruttura locale esistente.
+ Starburst fornisce diversi connettori aziendali e open source integrati che facilitano la connettività a una varietà di sistemi legacy. Per un elenco completo dei connettori e delle relative funzionalità, consulta [Connettori](https://docs.starburst.io/latest/connector.html) nella guida per l'utente di *Starburst* Enterprise.
+ Starburst può interrogare i dati in tempo reale da fonti di dati locali. In questo modo si evitano interruzioni delle normali operazioni aziendali durante la migrazione dei dati.
+ Se state migrando da un'implementazione Starburst Enterprise locale esistente, potete utilizzare un connettore speciale, Starburst *Stargate, per connettere il cluster Starburst* Enterprise direttamente al cluster locale. AWS Ciò offre ulteriori vantaggi in termini di prestazioni quando gli utenti aziendali e gli analisti di dati uniscono le query dall'ambiente locale all'ambiente locale. Cloud AWS 

**Panoramica dei processi di alto livello**

Puoi accelerare i progetti di migrazione dei dati utilizzando Starburst perché Starburst consente di ottenere informazioni dettagliate su tutti i tuoi dati, prima della migrazione. L'immagine seguente mostra il processo tipico di migrazione dei dati utilizzando Starburst.

![\[Flusso di processo per la migrazione dei dati nel cloud AWS utilizzando Starburst\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/12ae0463-9029-4a32-9d7b-70cdb5406fb0/images/e79b0084-7275-4824-8854-646236ec23dc.png)


**Ruoli**

I seguenti ruoli sono in genere necessari per completare una migrazione utilizzando Starburst:
+ **Amministratore cloud**: responsabile della disponibilità delle risorse cloud per l'esecuzione dell'applicazione Starburst Enterprise
+ **Amministratore Starburst**: responsabile dell'installazione, della configurazione, della gestione e del supporto dell'applicazione Starburst
+ Ingegnere **dei dati** — Responsabile di:
  + Migrazione dei dati legacy nel cloud
  + Creazione di viste semantiche per supportare l'analisi
+ **Proprietario della soluzione o del sistema**: responsabile dell'implementazione complessiva della soluzione

## Tools (Strumenti)
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-tools"></a>

**Servizi AWS**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) fornisce capacità di elaborazione scalabile in. Cloud AWS Puoi avviare tutti i server virtuali di cui hai bisogno e dimensionarli rapidamente.
+ [Amazon Elastic Kubernetes Service (Amazon EKS) ti aiuta a eseguire Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) su AWS Kubernetes senza dover installare o gestire il tuo piano di controllo o i tuoi nodi Kubernetes.

**Altri strumenti**
+ [Helm](https://helm.sh/docs/): Helm è un gestore di pacchetti per Kubernetes che ti aiuta a installare e gestire le applicazioni sul tuo cluster Kubernetes.
+ [Starburst Enterprise](https://docs.starburst.io/latest/index.html) — Starburst Enterprise è un motore di query MPP (Massively Parallel Processing) basato su SQL che costituisce la base di una strategia globale di data mesh per l'analisi.
+ [Starburst Stargate](https://docs.starburst.io/latest/connector/starburst-stargate.html) - Starburst Stargate collega cataloghi e fonti di dati in un ambiente Starburst Enterprise, come un cluster in un data center locale, ai cataloghi e alle fonti di dati in un altro ambiente Starburst Enterprise, come un cluster in Cloud AWS.

## Epiche
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-epics"></a>

### Valuta i dati
<a name="assess-the-data"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Identifica e dai priorità ai tuoi dati. | Identifica i dati che desideri spostare. I sistemi legacy locali di grandi dimensioni possono includere dati principali che desideri migrare insieme a dati che non desideri spostare o che non possono essere spostati per motivi di conformità. Iniziare con un inventario dei dati ti aiuta a stabilire la priorità dei dati a cui rivolgerti per primi. Per ulteriori informazioni, consulta [Introduzione alla scoperta automatica dei portafogli](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/get-started-with-automated-portfolio-discovery.html). | Ingegnere dei dati, DBA | 
| Esplora, archivia ed esegui il backup dei tuoi dati. | Convalida la qualità, la quantità e la pertinenza dei dati per il tuo caso d'uso. Esegui il backup o crea un'istantanea dei dati secondo necessità e finalizza l'ambiente di destinazione per i dati. | Ingegnere dei dati, DBA | 

### Configura l'ambiente Starburst Enterprise
<a name="set-up-the-starburst-enterprise-environment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura Starburst Enterprise in. Cloud AWS | Durante la catalogazione dei dati, configura Starburst Enterprise in un cluster Amazon EKS gestito. *Per ulteriori informazioni, consulta [Deploying with Kubernetes](https://docs.starburst.io/latest/k8s.html) nella documentazione di riferimento di Starburst Enterprise.* Ciò consente l' business-as-usualanalisi mentre è in corso la migrazione dei dati. | Amministratore AWS, sviluppatore di app | 
| Connect Starburst alle fonti di dati. | Dopo aver identificato i dati e configurato Starburst Enterprise, collega Starburst alle fonti di dati. Starburst legge i dati direttamente dalla fonte dati come una query SQL. Per ulteriori informazioni, consultate la documentazione di riferimento di [Starburst Enterprise](https://docs.starburst.io/latest/overview.html). | Amministratore AWS, sviluppatore di app | 

### Migra i dati
<a name="migrate-the-data"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea ed esegui le pipeline ETL. | Inizia il processo di migrazione dei dati. Questa attività può avvenire contemporaneamente all' business-as-usualanalisi. Per la migrazione, puoi utilizzare un prodotto di terze parti o Starburst. Starburst ha la capacità di leggere e scrivere dati da fonti diverse. Per ulteriori informazioni, consultate la documentazione di riferimento di [Starburst Enterprise](https://docs.starburst.io/latest/overview.html). | Ingegnere dei dati | 
| Convalida i dati. | Dopo la migrazione dei dati, convalida i dati per assicurarti che tutti i dati richiesti siano stati spostati e siano intatti. | Ingegnere dei dati, ingegnere DevOps  | 

### Tagliare
<a name="cut-over"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Taglia i dati. | Una volta completata la migrazione e la convalida dei dati, puoi tagliare i dati. Ciò comporta la modifica dei collegamenti di connessione dati in Starburst. Invece di puntare alle fonti locali, si punta alle nuove fonti cloud e si aggiornano le viste semantiche. Per ulteriori informazioni, vedete [Connettori](https://docs.starburst.io/latest/connector.html) nella documentazione di riferimento di *Starburst* Enterprise. | Ingegnere dei dati, responsabile Cutover | 
| Distribuiscilo agli utenti. | I consumatori di dati iniziano a utilizzare le fonti di dati migrate. Questo processo è invisibile agli utenti finali dell'analisi. | Responsabile Cutover, ingegnere dei dati | 

## Risorse correlate
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-resources"></a>

**Marketplace AWS**
+ [Galassia Starburst](https://aws.amazon.com/marketplace/pp/prodview-yugyv4gbgn5ss?ref_=srh_res_product_title)
+ [Starburst Enterprise](https://aws.amazon.com/marketplace/pp/prodview-pwnl3c6p2jycg?ref_=srh_res_product_title)
+ [Dati Starburst JumpStart](https://aws.amazon.com/marketplace/pp/prodview-ou6drb23gch2u?ref_=srh_res_product_title)
+ [Starburst Enterprise con Graviton](https://aws.amazon.com/marketplace/pp/prodview-2bpppdqlesn6w?ref_=srh_res_product_title)

**Documentazione Starburst**
+ [Guida per l'utente di Starburst Enterprise](https://docs.starburst.io/index.html)
+ [Documentazione di riferimento di Starburst Enterprise](https://docs.starburst.io/latest/index.html)

**Altra documentazione AWS **
+ [Inizia con l'individuazione automatica del portafoglio](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/get-started-with-automated-portfolio-discovery.html) (AWS Prescriptive Guidance)
+ [Ottimizzazione dei costi e delle prestazioni dell'infrastruttura cloud con Starburst](https://aws.amazon.com/blogs/architecture/optimizing-cloud-infrastructure-cost-and-performance-with-starburst-on-aws/) on (post sul blog) AWSAWS 

# Ottimizza l'ingestione ETL delle dimensioni dei file di input su AWS
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws"></a>

*Sostieni Patrikar, Amazon Web Services*

## Riepilogo
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-summary"></a>

Questo modello mostra come ottimizzare la fase di inserimento del processo di estrazione, trasformazione e caricamento (ETL) per i carichi di lavoro Big Data e Apache Spark su AWS Glue ottimizzando le dimensioni dei file prima dell'elaborazione dei dati. *Usa questo schema per prevenire o risolvere il problema dei file di piccole dimensioni.* Cioè, quando un numero elevato di file di piccole dimensioni rallenta l'elaborazione dei dati a causa della dimensione aggregata dei file. Ad esempio, centinaia di file che pesano solo poche centinaia di kilobyte ciascuno possono rallentare in modo significativo la velocità di elaborazione dei dati per i tuoi job AWS Glue. Questo perché AWS Glue deve eseguire funzioni di elenco interne su Amazon Simple Storage Service (Amazon S3) e YARN (Yet Another Resource Negotiator) deve archiviare una grande quantità di metadati. Per migliorare la velocità di elaborazione dei dati, puoi utilizzare il raggruppamento per consentire alle attività ETL di leggere un gruppo di file di input in un'unica partizione in memoria. La partizione raggruppa automaticamente i file più piccoli. In alternativa, è possibile utilizzare codice personalizzato per aggiungere logica batch ai file esistenti.

## Prerequisiti e limitazioni
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo
+ Uno o più [lavori](https://docs.aws.amazon.com/glue/latest/dg/author-job.html) AWS Glue
+ Uno o più carichi di lavoro Big Data o [Apache Spark](https://spark.apache.org/)
+ Un [bucket S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html)

## Architecture
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-architecture"></a>

Lo schema seguente mostra come i dati in diversi formati vengono elaborati da un job AWS Glue e quindi archiviati in un bucket S3 per ottenere visibilità sulle prestazioni.

![\[I dati in diversi formati vengono elaborati da un job AWS Glue e quindi archiviati in un bucket S3.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/88ee332f-2f12-4d88-b491-e78bbb173850/images/9a97b54a-3f67-4a48-94d2-5807373ace25.png)


Il diagramma mostra il flusso di lavoro seguente:

1. 
**Nota**  
Un job AWS Glue converte file di piccole dimensioni in formato CSV, JSON e Parquet in frame dinamici. : La dimensione del file di input ha l'impatto più significativo sulle prestazioni del job AWS Glue.

1. Il job AWS Glue esegue funzioni di elenco interne in un bucket S3.

## Tools (Strumenti)
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-tools"></a>
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) è un servizio ETL completamente gestito. Ti aiuta a classificare, pulire, arricchire e spostare i dati in modo affidabile tra archivi e flussi di dati.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

## Epiche
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-epics"></a>

### Usa il raggruppamento per ottimizzare l'ingestione di ETL durante la lettura
<a name="use-grouping-to-optimize-etl-ingestion-during-reading"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Specificare la dimensione del gruppo. | Se hai più di 50.000 file, il raggruppamento viene eseguito per impostazione predefinita. Tuttavia, è possibile utilizzare il raggruppamento anche per meno di 50.000 file specificando la dimensione del gruppo nel parametro. `connectionOptions` Il `connectionOptions` parametro si trova nel metodo. `create_dynamic_frame.from_options` | Ingegnere dei dati | 
| Scrivi il codice di raggruppamento. | Usa il `create_dynamic_frame` metodo per creare una cornice dinamica. Esempio:<pre>S3bucket_node1 = glueContext.create_dynamic_frame.from_options(<br />    format_options={"multiline": False},<br />    connection_type="s3",<br />    format="json",<br />    connection_options={<br />        "paths": ["s3://bucket/prefix/file.json"],<br />        "recurse": True,<br />        "groupFiles": 'inPartition', <br />        "groupSize": 1048576<br />    },<br />    transformation_ctx="S3bucket_node1",<br />)</pre>`groupFiles`Da utilizzare per raggruppare i file in un gruppo di partizioni Amazon S3. Si usa `groupSize` per impostare la dimensione di destinazione del gruppo da leggere in memoria. Specificare `groupSize` in byte (1048576 = 1 MB). | Ingegnere dei dati | 
| Aggiungi il codice al flusso di lavoro. | Aggiungi il codice di raggruppamento al tuo [flusso](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html) di lavoro in AWS Glue. | Ingegnere dei dati | 

### Utilizza una logica personalizzata per ottimizzare l'ingestione di ETL
<a name="use-custom-logic-to-optimize-etl-ingestion"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Scegli la lingua e la piattaforma di elaborazione. | Scegli il linguaggio di scripting e la piattaforma di elaborazione su misura per il tuo caso d'uso. | Architetto del cloud | 
| Scrivi il codice. | Scrivi la logica personalizzata per raggruppare i tuoi file. | Architetto del cloud | 
| Aggiungi il codice al flusso di lavoro. | Aggiungi il codice al tuo [flusso](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html) di lavoro in AWS Glue. Ciò consente di applicare la logica personalizzata ogni volta che il lavoro viene eseguito. | Ingegnere dei dati | 

### Ripartizione durante la scrittura dei dati dopo la trasformazione
<a name="repartition-when-writing-data-after-transformation"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Analizza i modelli di consumo. | Scopri come le applicazioni downstream utilizzeranno i dati che scrivi. Ad esempio, se eseguono query sui dati ogni giorno e i dati vengono partizionati solo per regione o se i file di output sono molto piccoli, ad esempio 2,5 KB per file, non si tratta di una soluzione ottimale per il consumo. | DBA | 
| Ripartiziona i dati prima della scrittura. | Ripartizione basata su join o interrogazioni durante l'elaborazione (in base alla logica di elaborazione) e dopo l'elaborazione (in base al consumo). Ad esempio, ripartizione basata sulla dimensione dei byte, ad esempio, o ripartizione basata su colonne`.repartition(100000)`, ad esempio. `.repartition("column_name")` | Ingegnere dei dati | 

## Risorse correlate
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-resources"></a>
+ [Lettura dei file di input in gruppi più grandi](https://docs.aws.amazon.com/glue/latest/dg/grouping-input-files.html)
+ [Monitoraggio di AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/monitor-glue.html)
+ [Monitoraggio di AWS Glue utilizzando i CloudWatch parametri di Amazon](https://docs.aws.amazon.com/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)
+ [Monitoraggio e debug dei processi](https://docs.aws.amazon.com/glue/latest/dg/monitor-profile-glue-job-cloudwatch-metrics.html)
+ [Guida introduttiva all'ETL serverless su AWS Glue](https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/welcome.html)

## Informazioni aggiuntive
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-additional"></a>

**Determinazione della dimensione del**

Non esiste un modo semplice per determinare se la dimensione di un file è troppo grande o troppo piccola. L'impatto della dimensione del file sulle prestazioni di elaborazione dipende dalla configurazione del cluster. In Hadoop di base, si consiglia di utilizzare file di 128 MB o 256 MB per sfruttare al meglio la dimensione del blocco.

Per la maggior parte dei carichi di lavoro di file di testo su AWS Glue, consigliamo una dimensione di file compresa tra 100 MB e 1 GB per un cluster da 5-10 DPU. Per determinare la dimensione ottimale dei file di input, monitora la sezione di preelaborazione del job AWS Glue, quindi controlla l'utilizzo della CPU e della memoria del job.

**Considerazioni aggiuntive**

Se le prestazioni nelle fasi iniziali dell'ETL rappresentano un ostacolo, prendete in considerazione la possibilità di raggruppare o unire i file di dati prima dell'elaborazione. Se hai il controllo completo sul processo di generazione dei file, può essere ancora più efficiente aggregare i punti dati sul sistema di origine stesso prima che i dati grezzi vengano inviati ad AWS.

# Orchestra una pipeline ETL con convalida, trasformazione e partizionamento utilizzando AWS Step Functions
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions"></a>

*Sandip Gangapadhyay, Amazon Web Services*

## Riepilogo
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-summary"></a>

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.

[Il codice che automatizza questo pattern è disponibile su, nella pipeline ETL con repository. GitHub AWS Step Functions](https://github.com/aws-samples/aws-step-functions-etl-pipeline-pattern)

## Prerequisiti e limitazioni
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-prereqs"></a>

**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](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) AWS CLI documentazione. Per le istruzioni di configurazione, consulta [Configurazione e impostazioni dei file di credenziali](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) nella AWS CLI documentazione.
+ Un bucket Amazon S3.
+ Un set di dati CSV con lo schema corretto. (L'[archivio di codice](https://github.com/aws-samples/aws-step-functions-etl-pipeline-pattern/) 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. Console di gestione AWS(Vedi l'[elenco dei browser supportati](https://aws.amazon.com/premiumsupport/knowledge-center/browsers-management-console/)).
+ 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](https://docs.aws.amazon.com/step-functions/latest/dg/service-quotas.html) nella AWS Step Functions documentazione.

**Versioni del prodotto**
+ Python 3.13 per AWS Lambda
+ AWS Glue versione 4.0

## Architecture
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-architecture"></a>

![\[Processo ETL dal bucket di origine S3 tramite Step Functions, AWS Glue e Amazon SNS in 10 passaggi.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/8eb792b0-d35b-4a63-ba2d-71eb8d2c1203/images/054c8e9d-76a2-4334-b21a-cbe76af45923.png)


 

Il flusso di lavoro illustrato nel diagramma è costituito da questi passaggi di alto livello:

1. L'utente carica un file CSV nella cartella di origine in Amazon S3.

1. Un evento di notifica di Amazon S3 avvia una AWS Lambda funzione che avvia la AWS Step Functions macchina a stati.

1. La funzione Lambda convalida lo schema e il tipo di dati del file CSV non elaborato.

1. A seconda dei risultati della convalida:

   1. Se la convalida del file sorgente ha esito positivo, il file viene spostato nella cartella dello stage per un'ulteriore elaborazione.

   1. 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).

1. Un AWS Glue crawler crea lo schema del file raw dalla cartella stage in Amazon S3.

1. Un AWS Glue job trasforma, comprime e partiziona il file raw in formato Parquet.

1. Il AWS Glue processo sposta inoltre il file nella cartella Transform in Amazon S3.

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

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

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

## Tools (Strumenti)
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-tools"></a>

**Servizi AWS**
+ [AWS Glue](https://aws.amazon.com/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](https://aws.amazon.com/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](https://aws.amazon.com/s3/) 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](https://aws.amazon.com/sns/) 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](https://aws.amazon.com/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](https://github.com/aws-samples/aws-step-functions-etl-pipeline-pattern) con repository. AWS Step Functions L'archivio del codice contiene i seguenti file e cartelle:
+ `template.yml`— AWS CloudFormation modello per creare la pipeline ETL con. AWS Step Functions
+ `parameter.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 di `RETRYLIMIT ` ambiente prima di inviare un messaggio di errore.
  + `start_crawler.py`— Avvia il crawler. AWS Glue 
  + `start_step_function.py`— Inizia. AWS Step Functions
  + `start_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
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-epics"></a>

### Prepara i file sorgente
<a name="prepare-the-source-files"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Clona il repository di codice di esempio. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Developer | 
| Aggiorna i valori dei parametri. | Nella copia locale del repository, modificate il `parameter.json` file e aggiornate i valori dei parametri predefiniti come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | 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 <pre>aws cloudformation package --template-file template.yml --s3-bucket <bucket_name> --output-template-file packaged.template --profile <profile_name></pre>dove:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Developer | 

### Creazione dello stack
<a name="create-the-stack"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Implementa il CloudFormation modello. | Per distribuire il AWS CloudFormation modello, esegui il comando seguente: AWS CLI <pre>aws cloudformation deploy --stack-name <stack_name> --template-file packaged.template --parameter-overrides file://parameter.json --capabilities CAPABILITY_IAM --profile <profile_name></pre>dove:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Developer | 
| Controlla lo stato di avanzamento. | Sulla [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation/), controlla lo stato di avanzamento dello sviluppo dello stack. Quando lo stato è`CREATE_COMPLETE`, lo stack è stato distribuito correttamente. | Developer | 
| Annota il nome del AWS Glue database. | La scheda **Output** per lo stack mostra il nome del AWS Glue database. Il nome chiave è. `GlueDBOutput` | Developer | 

### Prova la pipeline
<a name="test-the-pipeline"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Avvia la pipeline ETL. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | 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 `transform` impostato nel file). `parameter.json` | Developer | 
| Controlla il database partizionato. AWS Glue  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | 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](https://docs.aws.amazon.com/athena/latest/ug/querying-athena-tables.html) nella AWS documentazione. | Analista di database | 

## risoluzione dei problemi
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-troubleshooting"></a>


| 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](https://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html). | 

## Risorse correlate
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-resources"></a>

**Servizio AWS documentazione**
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/)
+ [AWS Glue](https://docs.aws.amazon.com/glue/)
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/)
+ [Amazon S3](https://docs.aws.amazon.com/s3/)
+ [Amazon SNS](https://docs.aws.amazon.com/sns/)

## Informazioni aggiuntive
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-additional"></a>

**Il diagramma seguente mostra il AWS Step Functions flusso di lavoro per una pipeline ETL di successo, dal pannello AWS Step Functions Inspector.** ****

![\[Flusso di lavoro Step Functions per la convalida dell'input .csv, la scansione dei dati e l'esecuzione del job AWS Glue.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/8eb792b0-d35b-4a63-ba2d-71eb8d2c1203/images/bd77de7b-4d04-44bb-95d2-3ec4599b3770.png)


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

![\[Flusso di lavoro Step Functions con errore, quindi il file viene spostato nella cartella degli errori.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/8eb792b0-d35b-4a63-ba2d-71eb8d2c1203/images/5fd7dd79-ba4c-4c20-b1f0-ad4b5f22bdfc.png)


 

# Esegui analisi avanzate con Amazon Redshift ML
<a name="perform-advanced-analytics-using-amazon-redshift-ml"></a>

*Po Hong e Chyanna Antonio, Amazon Web Services*

## Riepilogo
<a name="perform-advanced-analytics-using-amazon-redshift-ml-summary"></a>

Sul cloud Amazon Web Services (AWS), puoi utilizzare l'apprendimento automatico di Amazon Redshift (Amazon Redshift ML) per eseguire analisi ML sui dati archiviati in un cluster Amazon Redshift o su Amazon Simple Storage Service (Amazon S3). Amazon Redshift ML supporta l'apprendimento supervisionato, che viene in genere utilizzato per analisi avanzate. I casi d'uso di Amazon Redshift ML includono la previsione dei ricavi, il rilevamento delle frodi con carte di credito e il Customer Lifetime Value (CLV) o le previsioni del tasso di abbandono dei clienti.

Amazon Redshift ML semplifica per gli utenti del database la creazione, il training e la distribuzione di modelli ML utilizzando comandi SQL standard. Amazon Redshift ML utilizza Amazon SageMaker Autopilot per addestrare e ottimizzare automaticamente i migliori modelli ML per la classificazione o la regressione in base ai dati, mantenendo il controllo e la visibilità.

Tutte le interazioni tra Amazon Redshift, Amazon S3 e SageMaker Amazon sono astratte e automatizzate. Una volta addestrato e distribuito, il modello ML diventa disponibile come [funzione definita dall'utente](https://docs.aws.amazon.com/redshift/latest/dg/user-defined-functions.html) (UDF) in Amazon Redshift e può essere utilizzato nelle query SQL.  

Questo modello integra i modelli di [creazione, addestramento e distribuzione di modelli ML in Amazon Redshift utilizzando SQL con Amazon Redshift](https://aws.amazon.com/blogs/big-data/create-train-and-deploy-machine-learning-models-in-amazon-redshift-using-sql-with-amazon-redshift-ml/) ML dal blog AWS e il [tutorial](https://aws.amazon.com/getting-started/) [Build, train and deploy a ML SageMaker with Amazon dal Getting Started](https://aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/) Resource Center.

## Prerequisiti e limitazioni
<a name="perform-advanced-analytics-using-amazon-redshift-ml-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo
+ Dati esistenti in una tabella Amazon Redshift

**Competenze**
+ *Familiarità con i termini e i concetti utilizzati da Amazon Redshift ML, *tra cui apprendimento automatico**,* formazione e previsioni.* Per ulteriori informazioni su questo argomento, consulta [i modelli di Training ML](https://docs.aws.amazon.com/machine-learning/latest/dg/training-ml-models.html) nella documentazione di Amazon Machine Learning (Amazon ML).
+ Esperienza con la configurazione degli utenti, la gestione degli accessi e la sintassi SQL standard di Amazon Redshift. Per ulteriori informazioni su questo argomento, consulta la sezione [Guida introduttiva ad Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) nella documentazione di Amazon Redshift.
+ Conoscenza ed esperienza con Amazon S3 e AWS Identity and Access Management (IAM). 
+ Anche l'esperienza nell'esecuzione di comandi in AWS Command Line Interface (AWS CLI) è utile ma non obbligatoria. 

**Limitazioni**
+ Il cluster Amazon Redshift e il bucket S3 devono trovarsi nella stessa regione AWS.
+ L'approccio di questo modello supporta solo modelli di apprendimento supervisionato come regressione, classificazione binaria e classificazione multiclasse. 

## Architecture
<a name="perform-advanced-analytics-using-amazon-redshift-ml-architecture"></a>

![\[Workflow mostra come funziona Amazon Redshift ML SageMaker per creare, addestrare e distribuire un modello di machine learning.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/3b6a5f49-c647-45f4-940e-b623f989326a/images/36cc39fe-c1f3-4d68-b89e-e636156001a6.png)


I passaggi seguenti spiegano come funziona Amazon Redshift ML SageMaker per creare, addestrare e distribuire un modello di machine learning: 

1. Amazon Redshift esporta i dati di formazione in un bucket S3.

1. SageMaker Autopilot preelabora automaticamente i dati di allenamento.

1. Dopo aver richiamato l'`CREATE MODEL`istruzione, Amazon Redshift ML la SageMaker utilizza per la formazione.

1. SageMaker Autopilot cerca e consiglia l'algoritmo ML e gli iperparametri ottimali che ottimizzano le metriche di valutazione.

1. Amazon Redshift ML registra il modello ML di output come funzione SQL nel cluster Amazon Redshift.

1. La funzione del modello ML può essere utilizzata in un'istruzione SQL. 

**Stack tecnologico**
+ Amazon Redshift
+ SageMaker
+ Simple Storage Service (Amazon S3)

## Tools (Strumenti)
<a name="perform-advanced-analytics-using-amazon-redshift-ml-tools"></a>
+ [Amazon Redshift — Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/welcome.html) è un servizio di data warehousing di livello aziendale, su scala petabyte, completamente gestito.
+ [Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/machine_learning.html) — Amazon Redshift Machine Learning (Amazon Redshift ML) è un robusto servizio basato sul cloud che semplifica l'utilizzo della tecnologia ML da parte di analisti e data scientist di tutti i livelli.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) — Amazon Simple Storage Service (Amazon S3) è uno storage per Internet. 
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html): SageMaker è un servizio di machine learning completamente gestito. 
+ [Amazon SageMaker Autopilot — SageMaker Autopilot](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development.html) è un set di funzionalità che automatizza le attività chiave di un processo di apprendimento automatico (AutoML).

 

**Codice**

Puoi creare un modello di machine learning supervisionato in Amazon Redshift utilizzando il seguente codice:

```
"CREATE MODEL customer_churn_auto_model
FROM (SELECT state,
             account_length,
             area_code,
             total_charge/account_length AS average_daily_spend, 
             cust_serv_calls/account_length AS average_daily_cases,
             churn 
      FROM customer_activity
      WHERE  record_date < '2020-01-01' 
     )
TARGET churn
FUNCTION ml_fn_customer_churn_auto
IAM_ROLE 'arn:aws:iam::XXXXXXXXXXXX:role/Redshift-ML'
SETTINGS (
  S3_BUCKET 'your-bucket'
);")
```

**Nota**  
Lo `SELECT` stato può fare riferimento alle tabelle normali di Amazon Redshift, alle tabelle esterne di Amazon Redshift Spectrum o a entrambe.

## Epiche
<a name="perform-advanced-analytics-using-amazon-redshift-ml-epics"></a>

### Prepara un set di dati di addestramento e test
<a name="prepare-a-training-and-test-dataset"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Preparare un set di dati di addestramento e test. | Accedi alla Console di gestione AWS e apri la SageMaker console Amazon. Segui le istruzioni del tutorial [Build, train and deploy a machine learning model per creare un](https://aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/) file.csv o Apache Parquet con una colonna di etichette (*formazione supervisionata*) e senza intestazione. Ti consigliamo di mescolare e suddividere il set di dati grezzi in un set di addestramento per l'addestramento del modello (70 percento) e un set di test per la valutazione delle prestazioni del modello (30 percento). | Data Scientist | 

### Prepara e configura lo stack tecnologico
<a name="prepare-and-configure-the-technology-stack"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea e configura un cluster Amazon Redshift. | Sulla console Amazon Redshift, crea un cluster in base alle tue esigenze. Per ulteriori informazioni su questo argomento, consulta [Creare un cluster](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-data-launch-cluster.html) nella documentazione di Amazon Redshift.  I cluster Amazon Redshift devono essere creati con il `SQL_PREVIEW` percorso di manutenzione. Per ulteriori informazioni sulle tracce di anteprima, consulta [Scelta delle tracce di manutenzione del cluster](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-mgmt-maintenance-tracks) nella documentazione di Amazon Redshift. | DBA, architetto del cloud | 
| Crea un bucket S3 per archiviare i dati di allenamento e gli artefatti del modello. | Sulla console Amazon S3, crea un bucket S3 per i dati di addestramento e test. Per ulteriori informazioni sulla creazione di un bucket S3, consulta [Creare un bucket S3 da AWS Quick](https://docs.aws.amazon.com/quickstarts/latest/s3backup/step-1-create-bucket.html) Starts. Assicurati che il cluster Amazon Redshift e il bucket S3 si trovino nella stessa regione.  | DBA, architetto cloud | 
| Crea e collega una policy IAM al cluster Amazon Redshift. | Crea una policy IAM per consentire al cluster Amazon Redshift di accedere SageMaker ad Amazon S3. Per istruzioni e passaggi, consulta [Configurazione del cluster per l'utilizzo di Amazon Redshift ML nella documentazione](https://docs.aws.amazon.com/redshift/latest/dg/cluster-setup.html) di Amazon Redshift. | DBA, architetto cloud | 
| Consenti a utenti e gruppi di Amazon Redshift di accedere a schemi e tabelle. | Concedi le autorizzazioni per consentire a utenti e gruppi in Amazon Redshift di accedere a schemi e tabelle interni ed esterni. Per passaggi e istruzioni, consulta [Gestione delle autorizzazioni e della proprietà](https://docs.aws.amazon.com/redshift/latest/dg/permissions-ownership.html) nella documentazione di Amazon Redshift. | DBA | 

### Crea e addestra il modello ML in Amazon Redshift
<a name="create-and-train-the-ml-model-in-amazon-redshift"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea e addestra il modello ML in Amazon Redshift. | Crea e addestra il tuo modello di machine learning in Amazon Redshift ML. Per ulteriori informazioni, consulta la `CREATE MODEL` dichiarazione nella documentazione di Amazon Redshift. | Sviluppatore, Data scientist | 

### Esegui inferenze e previsioni in batch in Amazon Redshift
<a name="perform-batch-inference-and-prediction-in-amazon-redshift"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Esegui l'inferenza utilizzando la funzione del modello ML generata. | Per ulteriori informazioni sull'esecuzione dell'inferenza utilizzando la funzione del modello ML generata, consulta [Prediction nella documentazione](https://docs.aws.amazon.com/redshift/latest/dg/prediction.html) di Amazon Redshift. | Data scientist, utente di business intelligence | 

## Risorse correlate
<a name="perform-advanced-analytics-using-amazon-redshift-ml-resources"></a>

**Preparare un set di dati di formazione e test**
+ [Creazione, formazione e implementazione di un modello di machine learning con Amazon SageMaker](https://aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/)

 

**Prepara e configura lo stack tecnologico**
+ [Creazione di un cluster Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-data-launch-cluster.html)
+ [Scelta dei percorsi di manutenzione dei cluster Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-mgmt-maintenance-tracks)
+ [Creazione di un bucket S3](https://docs.aws.amazon.com/quickstarts/latest/s3backup/step-1-create-bucket.html)
+ [Configurazione di un cluster Amazon Redshift per l'utilizzo di Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/cluster-setup.html)
+ [Gestione delle autorizzazioni e della proprietà in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/permissions-ownership.html)

 

**Crea e addestra il modello ML in Amazon Redshift**
+ [Istruzione CREATE MODEL in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_MODEL.html#r_simple_create_model) 

 

**Esegui inferenze e previsioni in batch in Amazon Redshift**
+ [Previsione in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/prediction.html) 

 

**Altre risorse**
+ [Guida introduttiva ad Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/geting-started-machine-learning.html)
+ [Creazione, addestramento e distribuzione di modelli ML in Amazon Redshift utilizzando SQL con Amazon Redshift ML](https://aws.amazon.com/blogs/big-data/create-train-and-deploy-machine-learning-models-in-amazon-redshift-using-sql-with-amazon-redshift-ml/)
+ [Partner Amazon Redshift](https://aws.amazon.com/redshift/partners/?partner-solutions-cards.sort-by=item.additionalFields.partnerNameLower&partner-solutions-cards.sort-order=aschttps://aws.amazon.com/redshift/partners/?partner-solutions-cards.sort-by=item.additionalFields.partnerNameLower&partner-solutions-cards.sort-order=asc)
+ [Partner per le competenze di apprendimento automatico di AWS](https://aws.amazon.com/machine-learning/partner-solutions/?partner-solutions-cards.sort-by=item.additionalFields.partnerNameLower&partner-solutions-cards.sort-order=asc)

# Interroga le tabelle Amazon DynamoDB con SQL utilizzando Amazon Athena
<a name="query-amazon-dynamodb-tables-sql-amazon-athena"></a>

*Gavin Perrie, Ajit Ambike e Brad Yates, Amazon Web Services*

## Riepilogo
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-summary"></a>

Se i tuoi dati includono fonti diverse da Amazon Simple Storage Service (Amazon S3), puoi utilizzare query federate per accedere a tali origini dati relazionali, non relazionali, a oggetti o personalizzate. Questo modello mostra come configurare l'accesso alle query federate tramite Amazon Athena ad Amazon DynamoDB utilizzando un connettore di origine dati SQL.

Utilizzando questo pattern puoi fare quanto segue:
+ Interroga le tabelle DynamoDB utilizzando SQL.
+ Esegui query SQL federate in Athena e unisci tabelle DynamoDB con altre fonti di dati supportate.

## Prerequisiti e limitazioni
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-prereqs"></a>

**Prerequisiti**
+ Una tabella DynamoDB.
+ Un gruppo di lavoro Athena impostato per utilizzare il motore Athena versione 2. Per istruzioni, consulta la documentazione di [Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-changing.html).
+ Un bucket S3 in cui la `AthenaDynamoDBConnector` AWS Lambda funzione può trasferire i dati. Il bucket S3 e la funzione Lambda devono trovarsi nella stessa regione AWS.

Se è la prima volta che accedi ad Athena, avrai bisogno di un bucket S3 aggiuntivo da utilizzare come posizione dei risultati della query. Per istruzioni, consulta la documentazione di [Athena](https://docs.aws.amazon.com/athena/latest/ug/querying.html#query-results-specify-location-console).

**Limitazioni**
+ Le operazioni di scrittura come [INSERT INTO](https://docs.aws.amazon.com/athena/latest/ug/insert-into.html) non sono supportate. ****

**Versioni del prodotto**
+ [Athena Query Federation rilascia il GitHub](https://github.com/awslabs/aws-athena-query-federation/releases)

## Architecture
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-architecture"></a>

**Architettura Target**

Il diagramma seguente mostra il flusso di connessione dopo aver stabilito lo schema. L'utente si connette ad Amazon Athena per fornire la query. Athena passa la query e la destinazione alla funzione Lambda del connettore di origine dati DynamoDB, che recupera e restituisce i dati ad Athena. Se vengono restituite grandi quantità di dati, Athena archivia i risultati temporanei nel secchio di raccolta prima di imballare e restituire il set di dati completo.

![\[Flusso di lavoro dagli utenti ad Athena a Lambda, che si collega al bucket S3 e alla tabella DynamoDB.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/9d1ee529-36f3-4c7e-a2e7-05b76e09a3d8/images/e50a00cf-a55a-4def-81d5-4d2755dc9a97.png)


## Tools (Strumenti)
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-tools"></a>

**Servizi AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) è un servizio di query interattivo che ti aiuta ad analizzare i dati direttamente in Amazon Simple Storage Service (Amazon S3) utilizzando SQL standard. Questo modello utilizza [Amazon Athena DynamoDB Connector](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb), uno strumento creato utilizzando Amazon Athena Query Federation SDK e installato come applicazione tramite. AWS Lambda AWS Serverless Application Repository
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

**Archivio di codice**

Il codice per questo pattern è disponibile nel repository GitHub [Athena Query Federation](https://github.com/awslabs/aws-athena-query-federation/releases).

## Epiche
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-epics"></a>

### Configurare e testare il connettore di origine dati DynamoDB
<a name="set-up-and-test-the-ddb-data-source-connector"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Implementa l' AthenaDynamoDBConnector applicazione. | Per eseguire la distribuzione AthenaDynamoDBConnecter, effettuate le seguenti operazioni:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/query-amazon-dynamodb-tables-sql-amazon-athena.html) | AWS DevOps | 
| Crea una fonte di dati per Athena. | Per creare l'origine dati, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/query-amazon-dynamodb-tables-sql-amazon-athena.html) | AWS DevOps | 
| Usa Athena per interrogare la tabella DynamoDB. | Per interrogare la tabella DynamoDB, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/query-amazon-dynamodb-tables-sql-amazon-athena.html) | Sviluppatore di app | 

## risoluzione dei problemi
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| *La query ha esito negativo con. `GENERIC_INTERNAL_ERROR: The bucket is in this region: <region>`* | Assicurati che lo spill bucket Athena e la funzione Lambda siano creati nello stesso ambiente. Regione AWS | 
| L'origine dati appena creata non è visibile sulla console Athena. | I cataloghi di dati Athena sono regionali. Assicurati che sia `AthenaDynamoDBConnector` stato schierato nella regione in cui stai cercando di usare Athena. | 
| Non è possibile eseguire la query sull'origine dati appena creata. | Verifica che la **posizione dei risultati della query** sia stata impostata. | 

## Risorse correlate
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-resources"></a>
+ [Connettore Amazon Athena DynamoDB](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb)
+ [Query federata Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/connect-to-a-data-source.html)

# Accedi, esegui query e unisciti a tabelle Amazon DynamoDB utilizzando Athena
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena"></a>

*Moinul Al-Mamun, Amazon Web Services*

## Riepilogo
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-summary"></a>

Questo modello mostra come configurare una connessione tra Amazon Athena e Amazon DynamoDB utilizzando il connettore Amazon Athena DynamoDB. Il connettore utilizza una funzione AWS Lambda per interrogare i dati in DynamoDB. Non è necessario scrivere alcun codice per configurare la connessione. Una volta stabilita la connessione, è possibile accedere e analizzare rapidamente le tabelle DynamoDB utilizzando [Athena Federated Query per eseguire comandi SQL da Athena](https://docs.aws.amazon.com/athena/latest/ug/connect-to-a-data-source.html). Puoi anche unire una o più tabelle DynamoDB tra loro o con altre fonti di dati, come Amazon Redshift o Amazon Aurora.

## Prerequisiti e limitazioni
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo con autorizzazioni per gestire tabelle DynamoDB, sorgenti di dati Athena, Lambda e ruoli AWS Identity and Access Management (IAM)
+ Un bucket Amazon Simple Storage Service (Amazon S3) in cui Athena può archiviare i risultati delle query
+ Un bucket S3 in cui il connettore Athena DynamoDB può salvare i dati a breve termine
+ Una regione AWS che supporta la versione [2 del motore Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference-0002.html)
+ Autorizzazioni IAM per accedere ad Athena e ai bucket S3 richiesti
+ [Connettore Amazon Athena DynamoDB](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb), installato

**Limitazioni**

L'interrogazione delle tabelle DynamoDB comporta un costo. Le dimensioni delle tabelle che superano alcuni gigabyte (GBs) possono comportare costi elevati. Si consiglia di considerare i costi prima di eseguire qualsiasi operazione SCAN completa della tabella. Per ulteriori informazioni, consulta [Prezzi di Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing/). Per ridurre i costi e ottenere prestazioni elevate, si consiglia di utilizzare sempre LIMIT nella query (ad esempio,`SELECT * FROM table1 LIMIT 10`). Inoltre, prima di eseguire una query JOIN o GROUP BY in un ambiente di produzione, considerate le dimensioni delle tabelle. Se le tue tabelle sono troppo grandi, prendi in considerazione opzioni alternative come [la migrazione della tabella su Amazon](https://aws.amazon.com/blogs/database/simplify-amazon-dynamodb-data-extraction-and-analysis-by-using-aws-glue-and-amazon-athena/) S3.

## Architecture
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-architecture"></a>

Il diagramma seguente mostra come un utente può eseguire una query SQL su una tabella DynamoDB da Athena.

![\[Flusso di lavoro per connettere Athena e DynamoDB per eseguire una query SQL.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/e6ff94af-d208-40c7-94e4-af257755a603/images/bc8e0132-b578-463b-bf55-3c39ce359c17.png)


Il diagramma mostra il flusso di lavoro seguente:

1. Per interrogare una tabella DynamoDB, un utente esegue una query SQL da Athena.

1. Athena avvia una funzione Lambda.

1. La funzione Lambda interroga i dati richiesti nella tabella DynamoDB.

1. DynamoDB restituisce i dati richiesti alla funzione Lambda. Quindi, la funzione trasferisce i risultati della query all'utente tramite Athena.

1. La funzione Lambda memorizza i dati nel bucket S3.

**Stack tecnologico**
+ Amazon Athena
+ Amazon DynamoDB
+ Simple Storage Service (Amazon S3)
+ AWS Lambda

## Tools (Strumenti)
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-tools"></a>
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) è un servizio di query interattivo che ti aiuta ad analizzare i dati direttamente in Amazon S3 utilizzando SQL standard.
+ [Amazon Athena DynamoDB Connector](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb) è uno strumento AWS che consente ad Athena di connettersi a DynamoDB e accedere alle tabelle utilizzando query SQL.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di elaborazione che ti aiuta a eseguire codice senza dover fornire o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di calcolo che utilizzi.

## Epiche
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-epics"></a>

### Creare tabelle DynamoDB di esempio
<a name="create-sample-dynamodb-tables"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea la prima tabella di esempio.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Developer | 
| Inserisci dati di esempio nella prima tabella. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html)<pre>{<br />  "PK1": "1234",<br />  "SK1": "info",<br />  "Salary": "5000"<br /> }</pre><pre>{<br />  "PK1": "1235",<br />  "SK1": "info",<br />  "Salary": "5200"<br /> }</pre> | Developer | 
| Create la seconda tabella di esempio.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Developer | 
| Inserisci dati di esempio nella seconda tabella. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html)<pre>{<br />  "PK2": "1234",<br /> "SK2": "bonus",<br /> "Bonus": "500"<br />}</pre><pre>{<br />  "PK2": "1235",<br /> "SK2": "bonus",<br /> "Bonus": "1000"<br />}</pre> | Developer | 

### Creare un'origine dati in Athena per DynamoDB
<a name="create-a-data-source-in-athena-for-dynamodb"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura il connettore di origine dati. | Crea un'origine dati per DynamoDB, quindi crea una funzione Lambda per connetterti a quell'origine dati.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Developer | 
| Verifica che la funzione Lambda possa accedere allo spill bucket S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html)Se riscontri errori, consulta la sezione *Informazioni aggiuntive* di questo schema come guida. | Developer | 

### Accedi alle tabelle DynamoDB da Athena
<a name="access-dynamodb-tables-from-athena"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Interroga le tabelle DynamoDB. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Developer | 
| Unisci le due tabelle DynamoDB. | DynamoDB è un data store NoSQL e non supporta l'operazione di join SQL. Di conseguenza, è necessario eseguire un'operazione di join su due tabelle DynamoDB:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html)<pre>SELECT pk1, salary, bonus FROM dydbtable1 t1<br /> JOIN dydbtable2 t2 ON t1.pk1 = t2.pk2;</pre> | Developer | 

## Risorse correlate
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-resources"></a>
+ [Connettore Amazon Athena DynamoDB (](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb)AWS Labs)
+ [Interroga qualsiasi fonte di dati con la nuova query federata di Amazon Athena](https://aws.amazon.com/blogs/big-data/query-any-data-source-with-amazon-athenas-new-federated-query/) (AWS Big Data Blog)
+ [Riferimento alla versione del motore Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference.html) (Athena User Guide)
+ [Semplifica l'estrazione e l'analisi dei dati di Amazon DynamoDB utilizzando AWS Glue e Amazon Athena (AWS](https://aws.amazon.com/blogs/database/simplify-amazon-dynamodb-data-extraction-and-analysis-by-using-aws-glue-and-amazon-athena/) Database Blog)

## Informazioni aggiuntive
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-additional"></a>

Se esegui una query in Athena con `spill_bucket` il `{bucket_name}/folder_name/` formato, puoi ricevere il seguente messaggio di errore:

```
"GENERIC_USER_ERROR: Encountered an exception[java.lang.RuntimeException] from your LambdaFunction[arn:aws:lambda:us-east-1:xxxxxx:function:testdynamodb] executed in context[retrieving meta-data] with message[You do NOT own the spill bucket with the name: s3://amzn-s3-demo-bucket/athena_dynamodb_spill_data/]
This query ran against the "default" database, unless qualified by the query. Please post the error message on our forum  or contact customer support with Query Id: [query-id]"
```

Per risolvere questo errore, aggiorna la variabile di ambiente della funzione Lambda `spill_bucket` a`{bucket_name_only}`, quindi aggiorna la seguente policy Lambda IAM per l'accesso in scrittura ai bucket:

```
{
             "Action": [
                 "s3:GetObject",
                 "s3:ListBucket",
                 "s3:GetBucketLocation",
                 "s3:GetObjectVersion",
                 "s3:PutObject",
                 "s3:PutObjectAcl",
                 "s3:GetLifecycleConfiguration",
                 "s3:PutLifecycleConfiguration",
                 "s3:DeleteObject"
            ],
             "Resource": [
                 "arn:aws:s3:::spill_bucket",
                 "arn:aws:s3:::spill_bucket/*"
            ],
             "Effect": "Allow"
        }
```

In alternativa, puoi rimuovere il connettore sorgente dati Athena creato in precedenza e ricrearlo utilizzando only for. `{bucket_name}` `spill_bucket`

# Imposta l'ordinamento specifico della lingua per i risultati delle query di Amazon Redshift utilizzando un UDF scalare in Python
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf"></a>

*Ethan Stark, Amazon Web Services*

## Riepilogo
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-summary"></a>

Questo modello fornisce passaggi e codice di esempio per l'utilizzo di un UDF scalare in Python (funzione definita dall'utente) per configurare l'ordinamento linguistico senza distinzione tra maiuscole e minuscole per i risultati delle query di Amazon Redshift. È necessario utilizzare un UDF Python scalare perché Amazon Redshift restituisce risultati basati sull'ordinamento binario UTF-8 e non supporta l'ordinamento specifico della lingua. Un UDF Python è un codice di elaborazione non SQL basato su un programma Python ed eseguito in un data warehouse. È possibile eseguire il codice UDF Python con un'istruzione SQL in una singola query. Per ulteriori informazioni, consulta il post del [blog Introduzione a Python UDFs in Amazon](https://aws.amazon.com/blogs/big-data/introduction-to-python-udfs-in-amazon-redshift/) AWS Redshift Big Data.

I dati di esempio di questo modello si basano sull'alfabeto turco a scopo dimostrativo. L'UDF scalare Python in questo modello è stato creato per rendere i risultati delle query predefiniti di Amazon Redshift conformi all'ordinamento linguistico dei caratteri in lingua turca. *Per ulteriori informazioni, consulta l'*esempio della lingua turca* nella sezione Informazioni aggiuntive di questo modello.* È possibile modificare l'UDF scalare di Python in questo modello per altri linguaggi.

## Prerequisiti e limitazioni
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-prereqs"></a>

**Prerequisiti**
+ [Cluster Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html) con database, schema e tabelle
+ [Utente Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/r_Users.html) con `CREATE TABLE` e autorizzazioni `CREATE FUNCTION`
+ [Python 2.7](https://www.python.org/download/releases/2.7/) o successivo

**Limitazioni**

L'ordinamento linguistico utilizzato dalle query in questo modello non fa distinzione tra maiuscole e minuscole.

## Tools (Strumenti)
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-tools"></a>

**Servizi AWS**
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) è un servizio di data warehouse gestito su scala petabyte disponibile in. Cloud AWS Amazon Redshift è integrato con il tuo data lake, il che ti consente di utilizzare i tuoi dati per acquisire nuove informazioni per la tua azienda e i tuoi clienti.

**Altri strumenti**
+ Le [funzioni definite dall'utente in Python (UDFs)](https://docs.snowflake.com/en/developer-guide/udf/python/udf-python-introduction.html) sono funzioni che è possibile scrivere in Python e quindi richiamare istruzioni SQL.

## Epiche
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-epics"></a>

### Sviluppa codice per ordinare i risultati delle query in ordine linguistico
<a name="develop-code-to-sort-query-results-in-linguistic-order"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea una tabella per i tuoi dati di esempio. | Per creare una tabella in Amazon Redshift e inserire i dati di esempio nella tabella, utilizza le seguenti istruzioni SQL:<pre>CREATE TABLE my_table (first_name varchar(30));<br /><br />INSERT INTO my_table (first_name)<br />VALUES<br />    ('ali'),<br />    ('Ali'),<br />    ('ırmak'),<br />    ('IRMAK'),<br />    ('irem'),<br />    ('İREM'),<br />    ('oğuz'),<br />    ('OĞUZ'),<br />    ('ömer'),<br />    ('ÖMER'),<br />    ('sedat'),<br />    ('SEDAT'),<br />    ('şule'),</pre>I primi nomi nei dati di esempio includono caratteri speciali dell'alfabeto turco. Per ulteriori informazioni sulle considerazioni relative alla lingua turca relative a questo esempio, consultate *Esempio di lingua turca* nella sezione *Informazioni aggiuntive* di questo modello. | Ingegnere dei dati | 
| Controlla l'ordinamento predefinito dei dati di esempio. | Per visualizzare l'ordinamento predefinito dei dati di esempio in Amazon Redshift, esegui la seguente query:<pre>SELECT first_name FROM my_table ORDER BY first_name;</pre>La query restituisce l'elenco dei nomi dalla tabella creata in precedenza:<pre>first_name<br />---------------<br />Ali<br />IRMAK<br />OĞUZ<br />SEDAT<br />ali<br />irem<br />oğuz<br />sedat<br />ÖMER<br />ömer<br />İREM<br />ırmak<br />ŞULE<br />şule</pre>I risultati della query non sono nell'ordine corretto perché l'ordinamento binario UTF-8 predefinito non supporta l'ordinamento linguistico dei caratteri speciali turchi. | Ingegnere dei dati | 
| Crea una UDF Python scalare. | Per creare una UDF Python scalare, usa il seguente codice SQL: <pre>CREATE OR REPLACE FUNCTION collate_sort (value varchar) <br />RETURNS varchar <br />IMMUTABLE <br />AS <br />$$    <br />    def sort_str(val):<br />        import string<br />        <br />        dictionary = {<br />            'I': 'ı', <br />            'ı': 'h~', <br />            'İ': 'i', <br />            'Ş': 's~', <br />            'ş': 's~', <br />            'Ğ': 'g~', <br />            'ğ': 'g~', <br />            'Ü': 'u~', <br />            'ü': 'u~', <br />            'Ö': 'o~', <br />            'ö': 'o~', <br />            'Ç': 'c~', <br />            'ç': 'c~'<br />        }<br />        <br />        for key, value in dictionary.items():<br />            val = val.replace(key, value)<br />        <br />        return val.lower()<br /> <br />    return sort_str(value)<br />    <br />$$ LANGUAGE plpythonu;</pre> | Ingegnere dei dati | 
| Interroga i dati di esempio. | Per interrogare i dati di esempio utilizzando Python UDF, esegui la seguente query SQL:<pre>SELECT first_name FROM my_table ORDER BY collate_sort(first_name);</pre>La query ora restituisce i dati di esempio in ordine linguistico turco:<pre>first_name<br />---------------<br />ali<br />Ali<br />ırmak<br />IRMAK<br />irem<br />İREM<br />oğuz<br />OĞUZ<br />ömer<br />Ömer<br />sedat<br />SEDAT<br />şule<br />ŞULE</pre> | Ingegnere dei dati | 

## Risorse correlate
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-resources"></a>
+ [Clausola ORDER BY](https://docs.aws.amazon.com/redshift/latest/dg/r_ORDER_BY_clause.html) (documentazione Amazon Redshift)
+ [Creazione di una UDF scalare in Python](https://docs.aws.amazon.com/redshift/latest/dg/udf-creating-a-scalar-udf.html) (documentazione Amazon Redshift)

## Informazioni aggiuntive
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-additional"></a>

**Esempio di lingua turca**

Amazon Redshift restituisce i risultati delle query in base all'ordinamento binario UTF-8, non all'ordinamento specifico della lingua. Ciò significa che se esegui una query su una tabella Amazon Redshift contenente caratteri turchi, i risultati della query non vengono ordinati in base all'ordinamento linguistico della lingua turca. La lingua turca contiene sei caratteri speciali (ç, ı, ğ, ö, ş e ü) che non compaiono nell'alfabeto latino. Questi caratteri speciali vengono posizionati alla fine di un set di risultati ordinato in base all'ordinamento binario UTF-8, come illustrato nella tabella seguente.


| 
| 
| Ordinamento binario UTF-8 | Ordinamento linguistico turco | 
| --- |--- |
| a | a | 
| b | b | 
| c | c | 
| d | **ç (\$1)** | 
| e | d | 
| f | e | 
| g | f | 
| h | g | 
| i | **ğ (\$1)** | 
| j | h | 
| k | **ı (\$1)** | 
| l | i | 
| m | j | 
| n | k | 
| o | l | 
| p | m | 
| r | n | 
| s | o | 
| t | **ö (\$1)** | 
| u | p | 
| v | r | 
| y | s | 
| z | **s (\$1)** | 
| **c (\$1)** | t | 
| **ğ (\$1)** | u | 
| **ı (\$1)** | **ü (\$1)** | 
| **ö (\$1)** | v | 
| **s (\$1)** | y | 
| **ü (\$1)** | z | 

**Nota**  
L'asterisco (\$1) indica un carattere speciale nella lingua turca.

Come illustrato nella tabella precedente, il carattere speciale **ç** è compreso tra **c** e **d** nell'ordinamento linguistico turco, ma appare dopo **z** nell'ordinamento binario UTF-8. L'UDF scalare Python in questo modello utilizza il seguente dizionario di sostituzione dei caratteri per sostituire i caratteri speciali turchi con i corrispondenti caratteri equivalenti al latino.


| 
| 
| Carattere speciale turco | Carattere equivalente al latino | 
| --- |--- |
| ç | c\$1 | 
| ı | h \$1 | 
| ğ | g \$1 | 
| ö | o\$1 | 
| ş | s\$1 | 
| ü | u\$1 | 

**Nota**  
Un carattere tilde (\$1) viene aggiunto alla fine dei caratteri latini che sostituiscono i corrispondenti caratteri speciali turchi.

**Modifica una funzione UDF Python scalare**

Per modificare la funzione UDF scalare di Python da questo modello in modo che la funzione accetti un parametro locate e supporti un dizionario di transazioni multiple, usa il seguente codice SQL:

```
CREATE OR REPLACE FUNCTION collate_sort (value varchar, locale varchar) 
RETURNS varchar 
IMMUTABLE 
AS 
$$    
    def sort_str(val):
       import string
       # Turkish Dictionary
       if locale == 'tr-TR':
            dictionary = {
               'I': 'ı', 
               'ı': 'h~', 
               'İ': 'i', 
               'Ş': 's~', 
               'ş': 's~', 
               'Ğ': 'g~', 
               'ğ': 'g~', 
               'Ü': 'u~', 
               'ü': 'u~', 
               'Ö': 'o~', 
               'ö': 'o~', 
               'Ç': 'c~', 
               'ç': 'c~'
        }
        # German Dictionary
        if locale == 'de-DE':
            dictionary = {
               ....
               ....
        }
        
        for key, value in dictionary.items():
            val = val.replace(key, value)
        
        return val.lower()
 
    return sort_str(value)
    
$$ LANGUAGE plpythonu;
```

Il codice di esempio seguente mostra come interrogare l'UDF Python modificato:

```
SELECT first_name FROM my_table ORDER BY collate_order(first_name, 'tr-TR');
```

# Sottoscrivi una funzione Lambda alle notifiche di eventi dai bucket S3 in diverse regioni AWS
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions"></a>

*Suresh Konathala, Amazon Web Services*

*Andrew Preston e Arindom Sarkar, Nessuno*

## Riepilogo
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-summary"></a>

[Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) Event](https://docs.aws.amazon.com/AmazonS3/latest/userguide/NotificationHowTo.html) Notifications pubblica notifiche per determinati eventi nel tuo bucket S3 (ad esempio, eventi di creazione di oggetti, eventi di rimozione di oggetti o eventi di ripristino di oggetti). Puoi utilizzare una funzione AWS Lambda per elaborare queste notifiche in base ai requisiti dell'applicazione. Tuttavia, la funzione Lambda non può sottoscrivere direttamente le notifiche dei bucket S3 ospitati in diverse regioni AWS.

L'approccio di questo pattern implementa [uno scenario di fanout](https://docs.aws.amazon.com/sns/latest/dg/sns-common-scenarios.html) per elaborare le notifiche Amazon S3 da bucket S3 interregionali utilizzando un argomento Amazon Simple Notification Service (Amazon SNS) per ogni regione. Questi argomenti SNS regionali inviano le notifiche degli eventi di Amazon S3 a una coda Amazon Simple Queue Service (Amazon SQS) in una regione centrale che contiene anche la tua funzione Lambda. La funzione Lambda sottoscrive questa coda SQS ed elabora le notifiche degli eventi in base ai requisiti dell'organizzazione.

## Prerequisiti e limitazioni
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo.
+ Bucket S3 esistenti in più regioni, inclusa una regione centrale per ospitare la coda Amazon SQS e la funzione Lambda.
+ AWS Command Line Interface (AWS CLI), installata e configurata. Per ulteriori informazioni su questo argomento, consulta [Installazione, aggiornamento e disinstallazione dell'interfaccia a riga di comando di AWS nella documentazione dell'interfaccia](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) a riga di comando di AWS. 
+ Familiarità con lo scenario fanout in Amazon SNS. Per ulteriori informazioni su questo argomento, consulta [gli scenari comuni di Amazon SNS nella documentazione](https://docs.aws.amazon.com/sns/latest/dg/sns-common-scenarios.html) di Amazon SNS.

## Architecture
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-architecture"></a>

Il diagramma seguente mostra l'architettura per l'approccio di questo pattern. 

![\[Workflow utilizza Amazon SNS, S3 e SQS per elaborare notifiche di eventi da bucket S3 interregionali.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/cf6c1804-8c41-46f1-9f17-ff361708c595/images/760cf4c0-0cb3-48d1-92ae-1cf0fa8ae076.png)


Il diagramma mostra il flusso di lavoro seguente:

1. Amazon S3 invia notifiche di eventi sui bucket S3 (ad esempio, oggetti creati, oggetti rimossi o oggetti ripristinati) a un argomento SNS nella stessa regione.

1. L'argomento SNS pubblica l'evento in una coda SQS nella regione centrale.

1. La coda SQS è configurata come origine degli eventi per la funzione Lambda e memorizza nel buffer i messaggi di evento per la funzione Lambda. 

1. La funzione Lambda analizza la coda SQS alla ricerca di messaggi ed elabora le notifiche degli eventi di Amazon S3 in base ai requisiti dell'applicazione.

 

**Stack tecnologico**
+ Lambda
+ Amazon SNS
+ Amazon SQS
+ Simple Storage Service (Amazon S3)

## Tools (Strumenti)
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-tools"></a>
+ [AWS CLI — L'](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)AWS Command Line Interface (AWS CLI) è uno strumento open source per interagire con i servizi AWS tramite comandi nella shell della riga di comando. Con una configurazione minima, puoi eseguire comandi AWS CLI che implementano funzionalità equivalenti a quelle fornite dalla Console di gestione AWS basata su browser da un prompt dei comandi.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html): AWS ti CloudFormation aiuta a modellare e configurare le tue risorse AWS, effettuarne il provisioning in modo rapido e coerente e gestirle per tutto il loro ciclo di vita. Puoi utilizzare un modello per descrivere le tue risorse e le loro dipendenze e lanciarle e configurarle insieme come uno stack, invece di gestire le risorse singolarmente. Puoi gestire e fornire stack su più account AWS e regioni AWS.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html): AWS Lambda è un servizio di elaborazione che 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. Verrà addebitato soltanto il tempo di calcolo consumato e non verrà addebitato alcun costo quando il codice non è in esecuzione.
+ [Amazon SNS — Amazon Simple](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) Notification Service (Amazon SNS) coordina e gestisce la consegna o l'invio di messaggi tra editori e clienti, inclusi server Web e indirizzi e-mail. I sottoscrittori ricevono tutti gli stessi messaggi pubblicati sugli argomenti ai quali sono hanno effettuato la sottoscrizione.
+ [Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) — Amazon Simple Queue Service (Amazon SQS) offre una coda ospitata sicura, durevole e disponibile che consente di integrare e disaccoppiare sistemi e componenti software distribuiti. Amazon SQS supporta code standard e FIFO.

## Epiche
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-epics"></a>

### Crea la coda SQS e la funzione Lambda nella tua regione centrale
<a name="create-the-sqs-queue-and-lambda-function-in-your-central-region"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea una coda SQS con un trigger Lambda. | Accedi alla Console di gestione AWS e utilizza le istruzioni del tutorial Using [Lambda with Amazon SQS](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-example.html) nella documentazione di AWS Lambda per creare le seguenti risorse nella tua regione centrale:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions.html)Assicurati di configurare la coda SQS come origine degli eventi per la tua funzione Lambda. | AWS DevOps, architetto cloud | 

### Crea un argomento SNS e configura le notifiche degli eventi per i bucket S3 in ogni regione richiesta
<a name="create-an-sns-topic-and-set-up-event-notifications-for-the-s3-buckets-in-each-required-region"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
|  Crea un argomento SNS per ricevere notifiche sugli eventi di Amazon S3. | Crea un argomento SNS in una regione da cui desideri ricevere notifiche sugli eventi di Amazon S3. Per ulteriori informazioni su questo argomento, consulta l'[argomento Creazione di un SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) nella documentazione di Amazon SNS. Assicurati di registrare l'Amazon Resource Name (ARN) del tuo argomento SNS.  | AWS DevOps, architetto cloud | 
| Sottoscrivi l'argomento SNS alla coda SQS centrale. | Sottoscrivi il tuo argomento SNS alla coda SQS ospitata dalla tua regione centrale. Per ulteriori informazioni su questo argomento, consulta l'[argomento Abbonamento a un SNS nella documentazione](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) di Amazon SNS. | AWS DevOps, architetto cloud | 
| Aggiorna la politica di accesso dell'argomento SNS.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions.html)<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Sid": "0",<br />      "Effect": "Allow",<br />      "Principal": {<br />        "Service": "s3.amazonaws.com"<br />      },<br />      "Action": "sns:Publish",<br />      "Resource": "arn:aws:sns:us-west-2::s3Events-SNSTopic-us-west-2"<br />    }<br />  ]<br />}</pre> | AWS DevOps, architetto cloud | 
| Configura le notifiche per ogni bucket S3 nella regione. | Imposta le notifiche degli eventi per ogni bucket S3 nella regione. Per ulteriori informazioni su questo argomento, consulta [Attivazione e configurazione delle notifiche di eventi utilizzando la console Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-event-notifications.html) nella documentazione di Amazon S3.Nella sezione **Destinazione**, scegli l'**argomento SNS** e specifica l'ARN dell'argomento SNS creato in precedenza. | AWS DevOps, architetto cloud | 
| Ripeti questa storia epica per tutte le regioni richieste. | Ripeti le attività di questa epopea per ogni regione da cui desideri ricevere notifiche sugli eventi di Amazon S3, inclusa la tua regione centrale. | AWS DevOps, architetto cloud | 

## Risorse correlate
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-resources"></a>
+ [Configurazione di una policy di accesso](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-add-permissions.html) (documentazione Amazon SQS)
+ [Configurazione di una coda SQS come origine di eventi (documentazione](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-eventsource) AWS Lambda)
+ [Configurazione di una coda SQS per avviare una funzione Lambda](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-lambda-function-trigger.html) (documentazione Amazon SQS)
+ [AWS::Lambda::Function risorsa](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html) ( CloudFormation documentazione AWS)

# Tre tipi di job ETL di AWS Glue per la conversione dei dati in Apache Parquet
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet"></a>

*Adnan Alvee, Nith Govindasivan e Karthikeyan Ramachandran, Amazon Web Services*

## Riepilogo
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-summary"></a>

Sul cloud Amazon Web Services (AWS), AWS Glue è un servizio di estrazione, trasformazione e caricamento (ETL) completamente gestito. AWS Glue rende conveniente classificare i dati, pulirli, arricchirli e spostarli in modo affidabile tra vari archivi e flussi di dati.

Questo modello fornisce diversi tipi di lavoro in AWS Glue e utilizza tre diversi script per dimostrare la creazione di lavori ETL.

Puoi usare AWS Glue per scrivere lavori ETL in un ambiente shell Python. Puoi anche creare lavori ETL in batch e in streaming utilizzando Python PySpark () o Scala in un ambiente Apache Spark gestito. Per iniziare a creare lavori ETL, questo modello si concentra sui lavori ETL in batch che utilizzano la shell Python e Scala. PySpark I job in Python shell sono pensati per carichi di lavoro che richiedono una potenza di calcolo inferiore. L'ambiente Apache Spark gestito è pensato per carichi di lavoro che richiedono un'elevata potenza di calcolo.

Apache Parquet è progettato per supportare schemi di compressione e codifica efficienti. Può velocizzare i carichi di lavoro di analisi perché archivia i dati in modo colonnare. La conversione dei dati in Parquet può far risparmiare spazio, costi e tempo di archiviazione a lungo termine. Per saperne di più su Parquet, consulta il post del blog [Apache Parquet: How to be a hero with the open source columnar](https://blog.openbridge.com/how-to-be-a-hero-with-powerful-parquet-google-and-amazon-f2ae0f35ee04) data format.

## Prerequisiti e limitazioni
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-prereqs"></a>

**Prerequisiti**
+ Ruolo AWS Identity and Access Management (IAM) (se non hai un ruolo, consulta la sezione [Informazioni aggiuntive](#three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional)).

## Architecture
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-architecture"></a>

**Stack tecnologico Target**
+ AWS Glue
+ Amazon Simple Storage Service (Amazon S3)
+ Apache Parquet

**Automazione e scalabilità**
+ I [flussi di lavoro AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html) supportano l'automazione completa di una pipeline ETL.
+ Puoi modificare il numero di unità di elaborazione dati (DPUs), o i tipi di lavoratori, in modo da scalare orizzontalmente e verticalmente.

## Tools (Strumenti)
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-tools"></a>

**Servizi AWS**
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) è un servizio ETL completamente gestito per la categorizzazione, la pulizia, l'arricchimento e lo spostamento dei dati tra vari archivi e flussi di dati.

**Altri strumenti**
+ [Apache Parquet](https://parquet.apache.org/) è un formato di file di dati open source orientato alle colonne progettato per l'archiviazione e il recupero.

**Configurazione**

Utilizza le seguenti impostazioni per configurare la potenza di calcolo di AWS Glue ETL. Per ridurre i costi, utilizza le impostazioni minime quando esegui il carico di lavoro fornito in questo schema. 
+ **Shell Python**: è possibile utilizzare 1 DPU per utilizzare 16 GB di memoria o 0,0625 DPU per utilizzare 1 GB di memoria. Questo modello utilizza 0,0625 DPU, che è l'impostazione predefinita nella console AWS Glue.
+ **Python o Scala per Spark**: se scegli i tipi di lavoro relativi a Spark nella console, AWS Glue per impostazione predefinita utilizza 10 worker e il tipo di worker G.1X. Questo modello utilizza due lavoratori, che è il numero minimo consentito, con il tipo di lavoratore standard, che è sufficiente ed economico.

La tabella seguente mostra i diversi tipi di worker AWS Glue per l'ambiente Apache Spark. Poiché un job della shell Python non utilizza l'ambiente Apache Spark per eseguire Python, non è incluso nella tabella.


| 
| 
|  | Standard | G.1X | G.2X | 
| --- |--- |--- |--- |
| VPCU | 4 | 4 | 8 | 
| Memoria | 16 GB | 16 GB | 32 GB | 
| Spazio su disco | 50 GB | 64 GB | 128 GB | 
| Esecutore per lavoratore | 2 | 1  | 1 | 

**Codice**

Per il codice utilizzato in questo modello, inclusa la configurazione del ruolo e dei parametri IAM, consulta la sezione [Informazioni aggiuntive](#three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional).

## Epiche
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-epics"></a>

### Carica i dati
<a name="upload-the-data"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Carica i dati in un bucket S3 nuovo o esistente. | Crea o usa un bucket S3 esistente nel tuo account. Carica il file sample\$1data.csv dalla sezione [Allegati](#attachments-8c926709-8fa4-417f-9aaf-bcc8113d018f) e annota la posizione del bucket S3 e del prefisso. | Informazioni generali su AWS | 

### Crea ed esegui il job AWS Glue
<a name="create-and-run-the-aws-glue-job"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea il job AWS Glue. | Nella sezione ETL della console AWS Glue, aggiungi un job AWS Glue. Seleziona il tipo di lavoro appropriato, la versione di AWS Glue e il DPU/Worker tipo e il numero di lavoratori corrispondenti. Per i dettagli, consulta la sezione *Configurazione*. | Sviluppatore, cloud o dati | 
| Modifica le posizioni di input e output. | Copia il codice corrispondente al tuo job AWS Glue e modifica la posizione di input e output che hai annotato nell'epopea **Upload the data**. | Sviluppatore, cloud o dati | 
| Configura i parametri. | È possibile utilizzare gli snippet forniti nella sezione [Informazioni aggiuntive](#three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional) per impostare i parametri per il job ETL. AWS Glue utilizza internamente quattro nomi di argomenti:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet.html)Il `--JOB_NAME` parametro deve essere inserito in modo esplicito nella console AWS Glue. Scegliete **Jobs**, **Edit Job****, Security configuration, librerie di script e parametri del lavoro (opzionale)**. Immettete `--JOB_NAME` come chiave e fornite un valore. Puoi anche utilizzare l'AWS Command Line Interface (AWS CLI) o l'API AWS Glue per impostare questo parametro. Il `--JOB_NAME` parametro è usato da Spark e non è necessario in un job in ambiente shell Python.È necessario aggiungere `--` prima il nome di ogni parametro; in caso contrario, il codice non funzionerà. Ad esempio, per i frammenti di codice, i parametri di posizione devono essere richiamati da and. `--input_loc` `--output_loc` | Sviluppatore, cloud o dati | 
| Esegui il job ETL. | Esegui il tuo lavoro e controlla l'output. Nota quanto spazio è stato ridotto rispetto al file originale. | Sviluppatore, cloud o dati | 

## Risorse correlate
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-resources"></a>

**Riferimenti**
+ [Apache Spark](https://spark.apache.org/)
+ [AWS Glue: come funziona](https://docs.aws.amazon.com/glue/latest/dg/how-it-works.html)
+ [Prezzi di AWS Glue](https://aws.amazon.com/glue/pricing/)

**Tutorial e video**
+ [Cos'è AWS Glue?](https://www.youtube.com/watch?v=qgWMfNSN9f4)

## Informazioni aggiuntive
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional"></a>

**Ruolo IAM**

Quando crei i job AWS Glue, puoi utilizzare un ruolo IAM esistente con le autorizzazioni mostrate nel seguente frammento di codice o un nuovo ruolo.

Per creare un nuovo ruolo, usa il seguente codice YAML.

```
# (c) 2022 Amazon Web Services, Inc. or its affiliates. All Rights Reserved. This AWS Content is provided subject to the terms of the AWS Customer
# Agreement available at https://aws.amazon.com/agreement/ or other written agreement between Customer and Amazon Web Services, Inc.

AWSTemplateFormatVersion: "2010-09-09"

Description: This template will setup IAM role for AWS Glue service.

Resources:
  rGlueRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: "Allow"
            Principal:
              Service:
                - "glue.amazonaws.com"
            Action:
              - "sts:AssumeRole"
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole
      Policies:
        - PolicyName: !Sub "${AWS::StackName}-s3-limited-read-write-inline-policy"
          PolicyDocument:
            Version: "2012-10-17"
            Statement:
              - Effect: Allow
                Action:
                  - "s3:PutObject"
                  - "s3:GetObject"
                Resource: "arn:aws:s3:::*/*"
      Tags:
        - Key  : "Name"
          Value : !Sub "${AWS::StackName}"

Outputs:
  oGlueRoleName:
    Description: AWS Glue IAM role
    Value:
      Ref: rGlueRole
    Export:
      Name: !Join [ ":", [ !Ref "AWS::StackName", rGlueRole ] ]
```

**Shell Python di AWS Glue**

Il codice Python utilizza Pandas e le PyArrow librerie per convertire i dati in Parquet. La libreria Pandas è già disponibile. La PyArrow libreria viene scaricata quando si esegue il pattern, perché viene eseguita una sola volta. È possibile utilizzare i file wheel PyArrow per convertirli in una libreria e fornire il file come pacchetto di libreria. Per ulteriori informazioni sulla creazione di pacchetti di file wheel, consultate [Fornire la propria libreria Python](https://docs.aws.amazon.com/glue/latest/dg/add-job-python.html).

*Parametri della shell AWS Glue Python*

```
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv, ["input_loc", "output_loc"])
```

*Codice shell AWS Glue Python*

```
from io import BytesIO
import pandas as pd
import boto3
import os
import io
import site
from importlib import reload
from setuptools.command import easy_install
install_path = os.environ['GLUE_INSTALLATION']
easy_install.main( ["--install-dir", install_path, "pyarrow"] )
reload(site)
import pyarrow


input_loc = "s3://bucket-name/prefix/sample_data.csv"
output_loc = "s3://bucket-name/prefix/"


input_bucket = input_loc.split('/', 1)[0]
object_key = input_loc.split('/', 1)[1]


output_loc_bucket = output_loc.split('/', 1)[0]
output_loc_prefix = output_loc.split('/', 1)[1] 


s3 = boto3.client('s3')
obj = s3.get_object(Bucket=input_bucket, Key=object_key)
df = pd.read_csv(io.BytesIO(obj['Body'].read()))


parquet_buffer = BytesIO()
s3_resource = boto3.resource('s3')
df.to_parquet(parquet_buffer, index=False) 
s3_resource.Object(output_loc_bucket, output_loc_prefix +  'data' + '.parquet').put(Body=parquet_buffer.getvalue())
```

**Processo AWS Glue Spark con Python**

Per utilizzare un tipo di lavoro AWS Glue Spark con Python, **scegli** Spark come tipo di lavoro. Scegli **Spark 3.1, Python 3 con tempi di avvio del processo migliorati (Glue versione 3.0) come versione** AWS Glue.

*Parametri di AWS Glue Python*

```
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv, ["JOB_NAME", "input_loc", "output_loc"])
```

*Processo AWS Glue Spark con codice Python*

```
import sys
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.transforms import *
from awsglue.dynamicframe import DynamicFrame
from awsglue.utils import getResolvedOptions
from awsglue.job import Job


sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)

input_loc = "s3://bucket-name/prefix/sample_data.csv"
output_loc = "s3://bucket-name/prefix/"

inputDyf = glueContext.create_dynamic_frame_from_options(\
    connection_type = "s3", \
    connection_options = { 
        "paths": [input_loc]}, \
    format = "csv",
    format_options={
        "withHeader": True,
        "separator": ","
    })


outputDF = glueContext.write_dynamic_frame.from_options(\
    frame = inputDyf, \
    connection_type = "s3", \
    connection_options = {"path": output_loc \
        }, format = "parquet")
```

Per un gran numero di file compressi di grandi dimensioni (ad esempio, 1.000 file di circa 3 MB ciascuno), usa il `compressionType` parametro con il `recurse` parametro per leggere tutti i file disponibili all'interno del prefisso, come mostrato nel codice seguente.

```
input_loc = "bucket-name/prefix/"
output_loc = "bucket-name/prefix/"

inputDyf = glueContext.create_dynamic_frame_from_options(
                    connection_type = "s3", 
                    connection_options = {"paths": [input_loc], 
                                            "compressionType":"gzip","recurse" :"True",
                                            },
                    format = "csv",
                    format_options={"withHeader": True,"separator": ","}
                    )
```

Per un numero elevato di file compressi di piccole dimensioni (ad esempio 1.000 file di circa 133 KB ciascuno), utilizzate il `groupFiles` parametro insieme ai parametri `compressionType` e. `recurse` Il `groupFiles` parametro raggruppa file di piccole dimensioni in più file di grandi dimensioni e controlla il raggruppamento alla dimensione specificata in byte (ad esempio, 1 MB). `groupSize` Il seguente frammento di codice fornisce un esempio di utilizzo di questi parametri all'interno del codice.

```
input_loc = "bucket-name/prefix/"
output_loc = "bucket-name/prefix/"

inputDyf = glueContext.create_dynamic_frame_from_options(
                    connection_type = "s3", 
                    connection_options = {"paths": [input_loc], 
                                            "compressionType":"gzip","recurse" :"True",
                                             "groupFiles" :"inPartition",  "groupSize" :"1048576",
                                            },
                    format = "csv",
                    format_options={"withHeader": True,"separator": ","}
                    )
```

Senza alcuna modifica nei nodi di lavoro, queste impostazioni consentono al job AWS Glue di leggere più file (grandi o piccoli, con o senza compressione) e di scriverli sulla destinazione in formato Parquet.

**Lavoro in AWS Glue Spark con Scala**

**Per utilizzare un tipo di lavoro AWS Glue Spark con Scala, scegli **Spark** come tipo di lavoro e **Language** come Scala.** Scegli **Spark 3.1, Scala 2 con tempi di avvio del lavoro migliorati (Glue versione 3.0)** come versione AWS Glue. Per risparmiare spazio di archiviazione, anche il seguente esempio di AWS Glue with Scala utilizza la `applyMapping` funzionalità per convertire i tipi di dati.

*Parametri di AWS Glue Scala*

```
import com.amazonaws.services.glue.util.GlueArgParser val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME", "inputLoc", "outputLoc").toArray)
```

*Job AWS Glue Spark con codice Scala*

```
import com.amazonaws.services.glue.GlueContext
import com.amazonaws.services.glue.MappingSpec
import com.amazonaws.services.glue.DynamicFrame
import com.amazonaws.services.glue.errors.CallSite
import com.amazonaws.services.glue.util.GlueArgParser
import com.amazonaws.services.glue.util.Job
import com.amazonaws.services.glue.util.JsonOptions
import org.apache.spark.SparkContext
import scala.collection.JavaConverters._


object GlueScalaApp {
  def main(sysArgs: Array[String]) {
    
    @transient val spark: SparkContext = SparkContext.getOrCreate()
    val glueContext: GlueContext = new GlueContext(spark)

    val inputLoc = "s3://bucket-name/prefix/sample_data.csv"
    val outputLoc = "s3://bucket-name/prefix/"

    val readCSV = glueContext.getSource("csv", JsonOptions(Map("paths" -> Set(inputLoc)))).getDynamicFrame()

    val applyMapping = readCSV.applyMapping(mappings = Seq(("_c0", "string", "date", "string"), ("_c1", "string", "sales", "long"),
    ("_c2", "string", "profit", "double")), caseSensitive = false)

    val formatPartition = applyMapping.toDF().coalesce(1)

    val dynamicFrame = DynamicFrame(formatPartition, glueContext)

    val dataSink = glueContext.getSinkWithFormat(
        connectionType = "s3", 
        options = JsonOptions(Map("path" -> outputLoc )),
        transformationContext = "dataSink", format = "parquet").writeDynamicFrame(dynamicFrame)
  }
}
```

## Allegati
<a name="attachments-8c926709-8fa4-417f-9aaf-bcc8113d018f"></a>

[Per accedere a contenuti aggiuntivi associati a questo documento, decomprimi il seguente file: attachment.zip](samples/p-attach/8c926709-8fa4-417f-9aaf-bcc8113d018f/attachments/attachment.zip)

# Visualizza i log di controllo di Amazon Redshift utilizzando Amazon Athena e Amazon QuickSight
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight"></a>

*Sanket Sirsikar e Gopal Krishna Bhatia, Amazon Web Services*

## Riepilogo
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-summary"></a>

La sicurezza è parte integrante delle operazioni di database sul cloud Amazon Web Services (AWS). L'organizzazione deve assicurarsi di monitorare le attività e le connessioni degli utenti del database per rilevare potenziali incidenti e rischi di sicurezza. Questo modello consente di monitorare i database per scopi di sicurezza e risoluzione dei problemi, un processo noto come controllo del database.

 Questo modello fornisce uno script SQL che automatizza la creazione di una tabella Amazon Athena e di viste per una dashboard di reporting in Amazon che ti aiuta a controllare i log di QuickSight Amazon Redshift. Ciò garantisce che gli utenti responsabili del monitoraggio delle attività del database abbiano un comodo accesso alle funzionalità di sicurezza dei dati.  

## Prerequisiti e limitazioni
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo.
+ Un cluster Amazon Redshift esistente. Per ulteriori informazioni su questo argomento, consulta [Creare un cluster Amazon Redshift nella documentazione](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-data-launch-cluster.html) di Amazon Redshift.
+ Accesso a un gruppo di lavoro Athena esistente. Per ulteriori informazioni, consulta [Come funzionano i gruppi di lavoro](https://docs.aws.amazon.com/athena/latest/ug/user-created-workgroups.html) nella documentazione di Amazon Athena. 
+ Un bucket sorgente Amazon Simple Storage Service (Amazon S3) Simple Storage Service (IAM) esistente con le autorizzazioni AWS Identity and Access Management (IAM) richieste. Per ulteriori informazioni, consulta le [autorizzazioni Bucket per la registrazione di audit di Amazon Redshift [da Database audit](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html)](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html#db-auditing-bucket-permissions) logging nella documentazione di Amazon Redshift.

## Architecture
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-architecture"></a>

![\[Data flow diagram showing Amazon Redshift, logs, S3 bucket, Amazon Athena, and Amazon Quick.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/90e69009-001e-4ced-bef0-3c361f93ae87/images/9fde7f01-17ab-4207-8a59-a12daf85a382.png)


 

**Stack tecnologico**
+ Athena
+ Amazon Redshift 
+ Simple Storage Service (Amazon S3) 
+ QuickSight

## Tools (Strumenti)
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-tools"></a>
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) — Athena è un servizio di query interattivo che semplifica l'analisi dei dati in Amazon S3 utilizzando SQL standard. 
+ [Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html): QuickSight è un servizio di business intelligence (BI) scalabile, senza server, incorporabile e basato sull'apprendimento automatico. 
+ [Amazon Redshift — Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) è un servizio di data warehousing di livello aziendale, su scala petabyte, completamente gestito. 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) — Amazon Simple Storage Service (Amazon S3) è uno storage per Internet.

## Epiche
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-epics"></a>

### Configurazione del cluster Amazon Redshift
<a name="configure-the-amazon-redshift-cluster"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
|  Abilita la registrazione di controllo per il cluster Amazon Redshift. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight.html) | DBA, ingegnere dei dati | 
| Abilita la registrazione nel gruppo di parametri del cluster Amazon Redshift. | Puoi abilitare il controllo dei log di connessione, dei log degli utenti e dei log delle attività degli utenti contemporaneamente utilizzando la Console di gestione AWS, il riferimento all'API Amazon Redshift o AWS Command Line Interface (AWS CLI).  Per il controllo dei log delle attività degli utenti, è necessario abilitare il parametro del database. `enable_user_activity_logging` Se si abilita solo la funzionalità di registrazione di controllo ma non il parametro associato, l'audit del database registra le informazioni di registrazione per la connessione e i registri degli utenti ma non per i registri delle attività dell'utente. Il `enable_user_activity_logging` parametro non è abilitato per impostazione predefinita, ma è possibile abilitarlo modificandolo da a. `false` `true`Devi creare un nuovo gruppo di parametri del cluster con il `user_activity_logging` parametro abilitato e collegarlo al tuo cluster Amazon Redshift. Per ulteriori informazioni su questo argomento, consulta [Modificare un cluster](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-console.html#modify-cluster) nella documentazione di Amazon Redshift.Per ulteriori informazioni su questa attività, consulta i [gruppi di parametri di Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html) e [Configuring auditing using the console nella documentazione](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing-console.html) di Amazon Redshift. | DBA, ingegnere dei dati | 
| Configura le autorizzazioni del bucket S3 per la registrazione dei cluster Amazon Redshift. | Quando abiliti la registrazione, Amazon Redshift raccoglie le informazioni di registrazione e le carica in file di registro archiviati in un bucket S3. Puoi utilizzare un bucket S3 esistente o crearne uno nuovo.Assicurati che Amazon Redshift disponga delle autorizzazioni IAM necessarie per accedere al bucket S3. Per ulteriori informazioni su questo argomento, consulta le [autorizzazioni Bucket per la registrazione di audit di Amazon Redshift [da Database audit](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html)](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html#db-auditing-bucket-permissions) logging nella documentazione di Amazon Redshift. | DBA, ingegnere dei dati | 

### Creare la tabella e le viste Athena
<a name="create-the-athena-table-and-views"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea la tabella e le viste Athena per interrogare i dati del log di controllo di Amazon Redshift dal bucket S3. | Apri la console Amazon Athena e usa la query DDL (Data Definition Language) dallo script `AuditLogging.sql` SQL (allegato) per creare la tabella e le viste per i log delle attività degli utenti, i log degli utenti e i log delle connessioni.Per ulteriori informazioni e istruzioni, consulta il tutorial [Crea tabelle ed esegui query](https://athena-in-action.workshop.aws/30-basics/301-create-tables.html) da Amazon Athena Workshop. | Ingegnere dei dati | 

### Configura il monitoraggio dei registri nella QuickSight dashboard
<a name="set-up-log-monitoring-in-the-quicksight-dashboard"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea una QuickSight dashboard utilizzando Athena come origine dati. | Apri la QuickSight console Amazon e crea una QuickSight dashboard seguendo le istruzioni nel tutorial [Visualizza con Athena del QuickSight Workshop](https://athena-in-action.workshop.aws/30-basics/307-quicksight.html) di Amazon Athena. | DBA, ingegnere dei dati | 

## Risorse correlate
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-resources"></a>
+ [Crea tabelle ed esegui interrogazioni in Athena](https://athena-in-action.workshop.aws/30-basics/301-create-tables.html)
+ [Visualizza QuickSight con Athena](https://athena-in-action.workshop.aws/30-basics/307-quicksight.html)

## Allegati
<a name="attachments-90e69009-001e-4ced-bef0-3c361f93ae87"></a>

[Per accedere a contenuti aggiuntivi associati a questo documento, decomprimi il seguente file: attachment.zip](samples/p-attach/90e69009-001e-4ced-bef0-3c361f93ae87/attachments/attachment.zip)

# Visualizza i report sulle credenziali IAM per tutti gli account AWS utilizzando Amazon Quick Sight
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight"></a>

*Parag Nagwekar e Arun Chandapillai, Amazon Web Services*

## Riepilogo
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-summary"></a>


| 
| 
| Avviso: gli utenti IAM dispongono di credenziali a lungo termine, il che rappresenta un rischio per la sicurezza. Per ridurre questo rischio, si consiglia di fornire a questi utenti solo le autorizzazioni necessarie per eseguire l'attività e di rimuoverli quando non sono più necessari. | 
| --- |

Puoi utilizzare i report sulle credenziali di AWS Identity and Access Management (IAM) per aiutarti a soddisfare i requisiti di sicurezza, controllo e conformità della tua organizzazione. [I report sulle credenziali](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html) forniscono un elenco di tutti gli utenti dei tuoi account AWS e mostrano lo stato delle loro credenziali, come password, chiavi di accesso e dispositivi di autenticazione a più fattori (MFA). Puoi utilizzare i report delle credenziali per più account AWS gestiti da [AWS Organizations](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/core-concepts.html).

Questo modello include passaggi e codice per aiutarti a creare e condividere report sulle credenziali IAM per tutti gli account AWS della tua organizzazione utilizzando i dashboard di Amazon Quick Sight. Puoi condividere le dashboard con le parti interessate della tua organizzazione. I report possono aiutare l'organizzazione a raggiungere i seguenti risultati aziendali mirati:
+ Identifica gli incidenti di sicurezza relativi agli utenti IAM
+ Tieni traccia della migrazione in tempo reale degli utenti IAM all'autenticazione Single Sign-On (SSO)
+ Tieni traccia delle regioni AWS a cui accedono gli utenti IAM
+ Rimani conforme
+ Condividi le informazioni con altre parti interessate

## Prerequisiti e limitazioni
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo
+ Un'[organizzazione](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html) con account membri
+ Un [ruolo IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) con autorizzazioni per accedere agli account in Organizations
+ [AWS Command Line Interface (AWS CLI) versione 2[,](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions) installata e configurata](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Un [abbonamento](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html) all'[edizione Amazon Quick Enterprise](https://docs.aws.amazon.com/quicksight/latest/user/editions.html)

## Architecture
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-architecture"></a>

**Stack tecnologico**
+ Amazon Athena
+ Amazon EventBridge
+ Amazon Quick Sight
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Glue
+ AWS Identity and Access Management (IAM)
+ AWS Lambda
+ AWS Organizations

**Architettura Target**

Il diagramma seguente mostra un'architettura per la configurazione di un flusso di lavoro che acquisisce i dati dei report sulle credenziali IAM da più account AWS.

![\[La schermata seguente illustra il diagramma dell'architettura\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/8724ff28-40f6-4c43-9c65-fbd18bbbfd0f/images/e780916a-4ab7-4fdc-8ecc-c837c7d90d13.png)


1. EventBridge richiama una funzione Lambda ogni giorno.

1. La funzione Lambda assume un ruolo IAM in ogni account AWS dell'organizzazione. Quindi, la funzione crea il report sulle credenziali IAM e archivia i dati del report in un bucket S3 centralizzato. È necessario abilitare la crittografia e disattivare l'accesso pubblico sul bucket S3.

1. Un crawler AWS Glue esegue quotidianamente la scansione del bucket S3 e aggiorna di conseguenza la tabella Athena.

1. Quick Sight importa e analizza i dati del report sulle credenziali e crea una dashboard che può essere visualizzata e condivisa con le parti interessate.

## Tools (Strumenti)
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-tools"></a>

**Servizi AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) è un servizio di query interattivo che semplifica l'analisi dei dati in Amazon S3 utilizzando SQL standard.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) è un servizio di bus eventi senza server che ti aiuta a connettere le tue applicazioni con dati in tempo reale provenienti da una varietà di fonti. Ad esempio, funzioni Lambda, endpoint di invocazione HTTP che utilizzano destinazioni API o bus di eventi in altri account AWS.
+ [Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) è un servizio di business intelligence (BI) su scala cloud che ti aiuta a visualizzare, analizzare e generare report sui dati in un'unica dashboard. Quick Sight è un componente fondamentale di Amazon Quick, che fornisce visualizzazione interattiva dei dati, analisi in memoria SPICE, analisi integrate e condivisione di dashboard.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue risorse AWS controllando chi è autenticato e autorizzato a utilizzarle.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di elaborazione che ti aiuta a eseguire codice senza dover fornire o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di calcolo che utilizzi.

**Codice**

Il codice per questo pattern è disponibile nel repository. GitHub [getiamcredsreport-allaccounts-org](https://github.com/aws-samples/getiamcredsreport-allaccounts-org) Puoi utilizzare il codice di questo repository per creare report sulle credenziali IAM su account AWS in Organizations e archiviarli in una posizione centrale.

## Epiche
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-epics"></a>

### Configura l'infrastruttura
<a name="set-up-the-infrastructure"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura l'edizione Amazon Quick Enterprise. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | Amministratore AWS DevOps, AWS, amministratore cloud, architetto cloud | 
| Integra Amazon Quick Sight con Amazon S3 e Athena. | È necessario [autorizzare](https://docs.aws.amazon.com/quicksight/latest/user/troubleshoot-connect-to-datasources.html) Quick Sight a utilizzare Amazon S3 e Athena prima di distribuire lo stack AWS. CloudFormation  | Amministratore AWS DevOps, AWS, amministratore cloud, architetto cloud | 

### Implementa l'infrastruttura
<a name="deploy-the-infrastructure"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Clona il GitHub repository. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | Amministratore AWS | 
| Implementa l'infrastruttura. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | Amministratore AWS | 
| Crea una politica di autorizzazione IAM. | [Crea una policy IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) per ogni account AWS della tua organizzazione con le seguenti autorizzazioni:<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Effect": "Allow",<br />      "Action": [<br />        "iam:GenerateCredentialReport",<br />        "iam:GetCredentialReport"<br />        ],<br />      "Resource": "*"<br />    }<br />  ]<br />}</pre> | AWS DevOps, amministratore del cloud, architetto del cloud, ingegnere dei dati | 
| Crea un ruolo IAM con una policy di fiducia. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html)<pre>{<br />   "Version": "2012-10-17",		 	 	 <br />   "Statement":[<br />      {<br />         "Effect":"Allow",<br />         "Principal":{<br />            "AWS":[<br />               "arn:aws:iam::<MasterAccountID>:role/<LambdaRole>"<br />            ]<br />         },<br />         "Action":"sts:AssumeRole"<br />      }<br />   ]<br />}</pre>Sostituisci `arn:aws:iam::<MasterAccountID>:role/<LambdaRole>` con l'ARN del ruolo Lambda indicato in precedenza.Le organizzazioni in genere utilizzano l'automazione per creare ruoli IAM per i propri account AWS. Ti consigliamo di utilizzare questa automazione, se disponibile. In alternativa, puoi utilizzare lo `CreateRoleforOrg.py` script dal repository**** del codice. Lo script richiede un ruolo amministrativo esistente o qualsiasi altro ruolo IAM che disponga dell'autorizzazione a creare una policy e un ruolo IAM in ogni account AWS. | Amministratore cloud, architetto cloud, amministratore AWS | 
| Configura Amazon Quick Sight per visualizzare i dati. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | AWS DevOps, amministratore del cloud, architetto del cloud, ingegnere dei dati | 

## Informazioni aggiuntive
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-additional"></a>

**Considerazioni aggiuntive**

Considera i seguenti aspetti:
+ Dopo aver distribuito l' CloudFormation infrastruttura, puoi attendere che Lambda e AWS Glue vengano eseguiti secondo le rispettive pianificazioni, prima che i report vengano creati in Amazon S3 e analizzati da Athena. In alternativa, puoi eseguire Lambda manualmente per ottenere i report in Amazon S3, quindi eseguire il crawler AWS Glue per ottenere la tabella Athena creata dai dati.
+ Quick è un potente strumento per analizzare e visualizzare i dati in base ai requisiti aziendali. Puoi utilizzare [i parametri](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html) in Quick per controllare i dati dei widget in base ai campi di dati che scegli. Inoltre, puoi utilizzare un'analisi rapida per creare parametri (ad esempio, campi Account, Data e Utente, ad esempio `partition_0``partition_1`, e `user` rispettivamente) dal set di dati per aggiungere controlli per i parametri Account, Data e Utente.
+ Per creare dashboard Quick Sight personalizzate, consulta [Quick Workshops](https://catalog.workshops.aws/quicksight/en-US) dal sito Web di AWS Workshop Studio.
+ Per vedere esempi di dashboard Quick Sight, consulta il repository di GitHub [getiamcredsreport-allaccounts-org](https://github.com/aws-samples/getiamcredsreport-allaccounts-org)codice.

**Risultati aziendali mirati**

È possibile utilizzare questo modello per ottenere i seguenti risultati aziendali mirati:
+ **Identifica gli incidenti di sicurezza relativi agli utenti IAM**: esamina ogni utente di ogni account AWS della tua organizzazione utilizzando un unico pannello di controllo. Puoi monitorare l'andamento delle singole regioni AWS a cui un utente IAM ha effettuato l'accesso più recente e dei servizi che ha utilizzato.
+ **Tieni traccia della migrazione in tempo reale degli utenti IAM all'autenticazione SSO**: utilizzando SSO, gli utenti possono accedere una sola volta con una singola credenziale e accedere a più account e applicazioni AWS. Se hai intenzione di migrare i tuoi utenti IAM a SSO, questo modello può aiutarti a passare all'SSO e tenere traccia di tutto l'utilizzo delle credenziali degli utenti IAM (come l'accesso alla Console di gestione AWS o l'uso delle chiavi di accesso) su tutti gli account AWS.
+ **Tieni traccia delle regioni AWS a cui accedono gli utenti IAM**: puoi controllare l'accesso degli utenti IAM alle regioni per vari scopi, come la sovranità dei dati e il controllo dei costi. Puoi anche tenere traccia dell'uso delle regioni da parte di qualsiasi utente IAM.
+ **Resta conforme**: seguendo il principio del privilegio minimo, puoi concedere solo le autorizzazioni IAM specifiche necessarie per eseguire un'attività specifica. Inoltre, puoi monitorare l'accesso ai servizi AWS, alla Console di gestione AWS e l'utilizzo delle credenziali a lungo termine.
+ **Condividi informazioni con altre parti interessate**: puoi condividere dashboard curate con altre parti interessate, senza concedere loro l'accesso ai report sulle credenziali IAM o agli account AWS.

# Altri modelli
<a name="analytics-more-patterns-pattern-list"></a>

**Topics**
+ [Autentica gli utenti delle applicazioni React esistenti utilizzando Amazon Cognito e l'interfaccia utente AWS Amplify](authenticate-react-app-users-cognito-amplify-ui.md)
+ [Estrai automaticamente i contenuti dai file PDF utilizzando Amazon Textract](automatically-extract-content-from-pdf-files-using-amazon-textract.md)
+ [Crea un modello di previsione con avvio a freddo utilizzando DeepAR per le serie temporali in SageMaker Amazon AI Studio Lab](build-a-cold-start-forecasting-model-by-using-deepar.md)
+ [Crea report dettagliati su costi e utilizzo per i cluster Amazon EMR utilizzando AWS Cost Explorer](create-detailed-cost-and-usage-reports-for-amazon-emr-clusters-by-using-aws-cost-explorer.md)
+ [Crea report dettagliati su costi e utilizzo per Amazon RDS e Amazon Aurora](create-detailed-cost-and-usage-reports-for-amazon-rds-and-amazon-aurora.md)
+ [Crea report dettagliati su costi e utilizzo per i lavori AWS Glue utilizzando AWS Cost Explorer](create-detailed-cost-and-usage-reports-for-aws-glue-jobs-by-using-aws-cost-explorer.md)
+ [Distribuisci i record DynamoDB ad Amazon S3 utilizzando Kinesis Data Streams e Firehose con AWS CDK](deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk.md)
+ [Implementa un job AWS Glue con una pipeline CodePipeline CI/CD AWS](deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline.md)
+ [Incorpora i componenti visivi di Amazon Quick Sight nelle applicazioni Web utilizzando Amazon Cognito e l'automazione IAc](embed-quick-sight-visual-components-into-web-apps-cognito-iac.md)
+ [Stima dei costi di storage per una tabella Amazon DynamoDB](estimate-storage-costs-for-an-amazon-dynamodb-table.md)
+ [Esegui le query SQL di Amazon Redshift utilizzando Terraform](execute-redshift-sql-queries-using-terraform.md)
+ [Estrarre e interrogare gli attributi AWS IoT SiteWise dei metadati in un data lake](extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake.md)
+ [Genera approfondimenti sui dati utilizzando Modernizzazione del mainframe AWS Amazon Q in Quick Sight](generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.md)
+ [Genera approfondimenti sui z/OS dati Db2 utilizzando Modernizzazione del mainframe AWS Amazon Q in Quick Sight](generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.md)
+ [Offri alle istanze di SageMaker notebook l'accesso temporaneo a un CodeCommit repository in un altro account AWS](give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.md)
+ [Identifica e avvisa quando le risorse Amazon Data Firehose non sono crittografate con una chiave AWS KMS](identify-and-alert-when-amazon-data-firehose-resources-are-not-encrypted-with-an-aws-kms-key.md)
+ [Importa la libreria psycopg2 per interagire con il tuo AWS Lambda database PostgreSQL](import-psycopg2-library-lambda.md)
+ [Inserisci e analizza i log di sicurezza AWS in Microsoft Sentinel](ingest-analyze-aws-security-logs-sentinel.md)
+ [Esegui la migrazione da Amazon RDS for Oracle ad Amazon RDS for PostgreSQL in modalità SSL utilizzando AWS DMS](migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.md)
+ [Esegui la migrazione di un database Oracle ad Amazon RDS for Oracle utilizzando gli adattatori flat file GoldenGate Oracle](migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters.md)
+ [Esegui la migrazione di un database Oracle ad Amazon Redshift utilizzando AWS DMS e AWS SCT](migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct.md)
+ [Esegui la migrazione dei dati da un ambiente Hadoop locale ad Amazon S3 utilizzando AWS per Amazon S3 DistCp PrivateLink](migrate-data-from-an-on-premises-hadoop-environment-to-amazon-s3-using-distcp-with-aws-privatelink-for-amazon-s3.md)
+ [Migrazione da Couchbase Server a Couchbase Capella su AWS](migrate-from-couchbase-server-to-couchbase-capella-on-aws.md)
+ [Esegui la migrazione dei carichi di lavoro Cloudera locali a Cloudera Data Platform su AWS](migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws.md)
+ [Gestione del failover Multi-AZ per i cluster EMR utilizzando Application Recovery Controller](multi-az-failover-spark-emr-clusters-arc.md)
+ [Automatizza le blue/green implementazioni dei database globali di Amazon Aurora utilizzando i principi IaC](p-automate-blue-green-deployments-aurora-global-databases-iac.md)
+ [Esegui il provisioning di AWS Service Catalog prodotti basati su AWS CloudFormation modelli utilizzando GitHub Actions](provision-aws-service-catalog-products-using-github-actions.md)
+ [Esegui test unitari per i lavori ETL in Python AWS Glue utilizzando il framework pytest](run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.md)
+ [Configura una dashboard di monitoraggio Grafana per AWS ParallelCluster](set-up-a-grafana-monitoring-dashboard-for-aws-parallelcluster.md)
+ [Scarica i dati da un cluster Amazon Redshift tra più account su Amazon S3](unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.md)
+ [Visualizza i risultati AI/ML del modello utilizzando Flask e AWS Elastic Beanstalk](visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.md)