

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Erstellen Sie mit dem AWS DataOps Development Kit eine Datenpipeline, um Google Analytics-Daten aufzunehmen, zu transformieren und zu analysieren
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit"></a>

*Anton Kukushkin und Rudy Puig, Amazon Web Services*

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

Dieses Muster beschreibt, wie Sie eine Datenpipeline zum Erfassen, Transformieren und Analysieren von Google Analytics-Daten mithilfe des AWS DataOps Development Kit (AWS DDK) und anderer Tools aufbauen. AWS-Services Das AWS DDK ist ein Open-Source-Entwicklungsframework, das Sie beim Aufbau von Datenworkflows und moderner Datenarchitektur unterstützt. AWS Eines der Hauptziele des AWS DDK besteht darin, Ihnen Zeit und Mühe zu ersparen, die normalerweise für arbeitsintensive Daten-Pipeline-Aufgaben aufgewendet werden, wie z. B. die Orchestrierung von Pipelines, den Aufbau der Infrastruktur und die Schaffung der dahinter stehenden Infrastruktur. DevOps Sie können diese arbeitsintensiven Aufgaben an AWS DDK auslagern, sodass Sie sich auf das Schreiben von Code und andere wichtige Aktivitäten konzentrieren können.

## Voraussetzungen und Einschränkungen
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Ein AppFlow Amazon-Connector für Google Analytics, [konfiguriert](https://docs.aws.amazon.com/appflow/latest/userguide/google-analytics.html)
+ [Python](https://www.python.org/downloads/) und [Pip](https://pip.pypa.io/en/stable/cli/pip_download/) (Pythons Paketmanager)
+ Git, installiert und [konfiguriert](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup)
+ AWS Command Line Interface (AWS CLI), [installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) und [konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ AWS Cloud Development Kit (AWS CDK), [installiert](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install)

**Versionen der Produkte**
+ Python 3.7 oder höher
+ pip 9.0.3 oder höher

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

**Technologie-Stack**
+ Amazon AppFlow
+ Amazon Athena
+ Amazon CloudWatch
+ Amazon EventBridge
+ Amazon Simple Storage Service (Amazon-S3)
+ Amazon-Simple-Queue-Service (Amazon SQS)
+ AWS DataOps Entwicklungskit (AWS DDK)
+ AWS Lambda

**Zielarchitektur**

Das folgende Diagramm zeigt den ereignisgesteuerten Prozess, der Google Analytics-Daten aufnimmt, transformiert und analysiert.

![\[Erfassung, Transformation und Analyse von Google Analytics-Daten mit AWS-Services.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/edf40222-2867-4d4a-9153-ab29785b6662/images/8c38b472-153b-4497-982c-8efb97d2f7a5.png)


Das Diagramm zeigt den folgenden Workflow:

1. Eine Amazon-Regel CloudWatch für geplante Ereignisse ruft Amazon AppFlow auf.

1. Amazon AppFlow nimmt Google Analytics-Daten in einen S3-Bucket auf.

1. Nachdem die Daten vom S3-Bucket aufgenommen wurden, EventBridge werden Ereignisbenachrichtigungen generiert, von einer CloudWatch Event-Regel erfasst und dann in eine Amazon SQS SQS-Warteschlange gestellt.

1. Eine Lambda-Funktion verarbeitet Ereignisse aus der Amazon SQS SQS-Warteschlange, liest die entsprechenden S3-Objekte, wandelt die Objekte in das Apache Parquet-Format um, schreibt die transformierten Objekte in den S3-Bucket und erstellt oder aktualisiert dann die Tabellendefinition. AWS Glue Data Catalog 

1. Eine Athena-Abfrage wird für die Tabelle ausgeführt.

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

**AWS Werkzeuge**
+ [Amazon AppFlow](https://docs.aws.amazon.com/appflow/latest/userguide/what-is-appflow.html) ist ein vollständig verwalteter Integrationsservice, der Ihnen den sicheren Datenaustausch zwischen SaaS-Anwendungen (Software as a Service) ermöglicht.
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) ist ein interaktiver Abfrageservice, mit dem Sie Daten mithilfe von Standard-SQL direkt in Amazon S3 analysieren können.
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) hilft Ihnen dabei, die Kennzahlen Ihrer AWS Ressourcen und der Anwendungen, auf denen Sie laufen, AWS in Echtzeit zu überwachen.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS Lambda Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) bietet eine sichere, dauerhafte und verfügbare gehostete Warteschlange, mit der Sie verteilte Softwaresysteme und -komponenten integrieren und entkoppeln können.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)ist ein Framework für die Definition der Cloud-Infrastruktur im Code und deren Bereitstellung. CloudFormation
+ [AWS DataOps Development Kit (AWS DDK)](https://github.com/awslabs/aws-ddk) ist ein Open-Source-Entwicklungsframework, das Sie beim Aufbau von Datenworkflows und moderner Datenarchitektur unterstützt. AWS

**Code**

Der Code für dieses Muster ist in den GitHub [AWS DataOps Repositorys Development Kit (AWS DDK)](https://github.com/awslabs/aws-ddk) und [Analysieren von Google Analytics-Daten mit Amazon AppFlow, Amazon Athena und AWS DataOps Development Kit](https://github.com/aws-samples/aws-ddk-examples/tree/main/google-analytics-data-using-appflow/python) verfügbar.

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

### Bereite die Umgebung vor
<a name="prepare-the-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie den Quellcode. | Führen Sie den folgenden Befehl aus, um den Quellcode zu klonen:<pre>git clone https://github.com/aws-samples/aws-ddk-examples.git</pre> | DevOps Ingenieur | 
| Erstellen Sie eine virtuelle Umgebung. | Navigieren Sie zum Quellcodeverzeichnis und führen Sie dann den folgenden Befehl aus, um eine virtuelle Umgebung zu erstellen:<pre>cd google-analytics-data-using-appflow/python && python3 -m venv .venv</pre> | DevOps Ingenieur | 
| Installieren Sie die Abhängigkeiten. | Führen Sie den folgenden Befehl aus, um die virtuelle Umgebung zu aktivieren und die Abhängigkeiten zu installieren:<pre>source .venv/bin/activate && pip install -r requirements.txt</pre> | DevOps Ingenieur | 

### Stellen Sie die Anwendung bereit, die Ihre Datenpipeline verwendet
<a name="deploy-the-application-that-uses-your-data-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bootstrap für die Umgebung | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.html) | DevOps Ingenieur | 
| Stellen Sie die Daten bereit. | Führen Sie den `cdk deploy --profile [AWS_PROFILE]` Befehl aus, um die Datenpipeline bereitzustellen. | DevOps Ingenieur | 

### Testen der Bereitstellung
<a name="test-the-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie den Stack-Status. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.html) | DevOps Ingenieur | 

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


| Problem | Lösung | 
| --- | --- | 
| Die Bereitstellung schlägt während der Erstellung einer `AWS::AppFlow::Flow` Ressource fehl und Sie erhalten die folgende Fehlermeldung: `Connector Profile with name ga-connection does not exist` | Bestätigen Sie, dass Sie einen AppFlow Amazon-Connector für Google Analytics erstellt und ihm einen Namen gegeben haben`ga-connection`.Anweisungen finden Sie unter [Google Analytics](https://docs.aws.amazon.com/appflow/latest/userguide/google-analytics.html) in der AppFlow Amazon-Dokumentation. | 

## Zugehörige Ressourcen
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-resources"></a>
+ [AWS DataOps Entwicklungskit (AWS DDK) (GitHub)](https://github.com/awslabs/aws-ddk)
+ [AWS DDK-Beispiele](https://github.com/aws-samples/aws-ddk-examples) () GitHub

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

AWS DDK-Daten-Pipelines bestehen aus einer oder mehreren Stufen. In den folgenden Codebeispielen verwenden Sie, `AppFlowIngestionStage` um Daten aus Google Analytics aufzunehmen, `SqsToLambdaStage` die Datentransformation durchzuführen und `AthenaSQLStage` die Athena-Abfrage auszuführen.

Zunächst werden die Phasen Datentransformation und Datenaufnahme erstellt, wie das folgende Codebeispiel zeigt:

```
        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)
            ],
        )
```

Als Nächstes wird das `DataPipeline` Konstrukt verwendet, um die Stufen mithilfe von EventBridge Regeln miteinander zu verbinden, wie das folgende Codebeispiel zeigt:

```
        (
            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)
        )
```

Weitere Codebeispiele finden Sie im Repository GitHub [Analysieren von Google Analytics-Daten mit Amazon AppFlow, Amazon Athena und AWS DataOps Development Kit](https://github.com/aws-samples/aws-ddk-examples/tree/main/google-analytics-data-using-appflow/python).