

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

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