Erstellen Sie mit dem AWS DataOps Development Kit eine Datenpipeline, um Google Analytics-Daten aufzunehmen, zu transformieren und zu analysieren - AWS Prescriptive Guidance

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

Erstellt von Anton Kukushkin (AWS) und Rudy Puig () AWS

Code-Repository: AWS DDKBeispiele — Analysieren von Google Analytics-Daten mit Amazon AppFlow, Amazon Athena und AWS DataOps Development Kit

Umgebung: PoC oder Pilotprojekt

Technologien: DataLakes; Analytik DevOps; Infrastruktur

Arbeitslast: Open Source

AWSDienste: Amazon AppFlow; Amazon Athena; AWS Lambda AWSCDK; Amazon S3

Übersicht

Dieses Muster beschreibt, wie Sie eine Datenpipeline aufbauen, um Google Analytics-Daten mithilfe des AWS DataOps Development Kit (DDK) und anderer Dienste aufzunehmen, zu transformieren und zu analysieren. AWS Das AWS DDK ist ein Open-Source-Entwicklungsframework, das Sie beim Aufbau von Datenworkflows und moderner Datenarchitektur unterstützt. AWS Eines der Hauptziele von AWS DDK ist es, Ihnen die Zeit und Mühe zu sparen, 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 auslagern, AWS DDK sodass Sie sich auf das Schreiben von Code und andere wichtige Aktivitäten konzentrieren können.

Voraussetzungen und Einschränkungen

Voraussetzungen

Versionen der Produkte

  • Python 3.7 oder höher

  • pip 9.0.3 oder höher

Architektur

Technologie-Stack

  • Amazon AppFlow

  • Amazon Athena

  • Amazon CloudWatch

  • Amazon EventBridge

  • Amazon-Simple-Storage-Service (Amazon-S3)

  • Amazon Simple Queue Service (AmazonSQS)

  • AWS DataOps Entwicklungskit (DDK)

  • AWSLambda

Zielarchitektur

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

Architekturdiagramm

Das Diagramm zeigt den folgenden Workflow:

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

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

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

  4. Eine Lambda-Funktion verarbeitet Ereignisse aus der SQS Amazon-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 des AWS Glue Data Catalogs.

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

Tools

AWSWerkzeuge

  • Amazon AppFlow ist ein vollständig verwalteter Integrationsservice, der Ihnen den sicheren Datenaustausch zwischen SaaS-Anwendungen (Software as a Service) ermöglicht.

  • Amazon Athena ist ein interaktiver Abfrageservice, mit dem Sie Daten mithilfe von Standards SQL direkt in Amazon S3 analysieren können.

  • Amazon CloudWatch hilft Ihnen dabei, die Kennzahlen Ihrer AWS Ressourcen und der Anwendungen, auf denen Sie laufen, AWS in Echtzeit zu überwachen.

  • Amazon EventBridge 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 Konten. AWS

  • Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

  • Amazon Simple Queue Service (AmazonSQS) bietet eine sichere, dauerhafte und verfügbare gehostete Warteschlange, mit der Sie verteilte Softwaresysteme und -komponenten integrieren und entkoppeln können.

  • AWSLambda ist ein Rechendienst, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.

  • AWSCloud Development Kit (CDK) ist ein Framework zur Definition von Cloud-Infrastruktur im Code und deren Bereitstellung über AWS CloudFormation.

  • AWS DataOps Development Kit (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 (DDK) und Analysieren von Google Analytics-Daten mit Amazon AppFlow, Amazon Athena und AWS DataOps Development Kit verfügbar.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie den Quellcode.

Führen Sie den folgenden Befehl aus, um den Quellcode zu klonen:

git clone https://github.com/aws-samples/aws-ddk-examples.git
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:

cd google-analytics-data-using-appflow/python && python3 -m venv .venv
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:

source .venv/bin/activate && pip install -r requirements.txt
DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Bootstrap für die Umgebung.

  1. Vergewissern Sie AWS CLI sich, dass das mit gültigen Anmeldeinformationen für Ihr AWS Konto eingerichtet ist. Weitere Informationen finden Sie in der AWS CLI Dokumentation unter Verwenden benannter Profile.

  2. Führen Sie den Befehl cdk bootstrap --profile [AWS_PROFILE] aus.

DevOps Ingenieur

Stellen Sie die Daten bereit.

Führen Sie den cdk deploy --profile [AWS_PROFILE] Befehl aus, um die Datenpipeline bereitzustellen.

DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Überprüfen Sie den Stack-Status.

  1. Öffnen Sie die AWS CloudFormation Konsole.

  2. Vergewissern Sie sich auf der Seite Stacks, dass der Status des Stacks DdkAppflowAthenaStack lautetCREATE_COMPLETE.

DevOps Ingenieur

Fehlerbehebung

ProblemLö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 habenga-connection.

Anweisungen finden Sie unter Google Analytics in der AppFlow Amazon-Dokumentation.

Zugehörige Ressourcen

Zusätzliche Informationen

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