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
AWSEin aktives Konto
Ein AppFlow Amazon-Connector für Google Analytics, konfiguriert
Git, installiert und konfiguriert
AWSBefehlszeilenschnittstelle (AWSCLI), installiert und konfiguriert
AWSCloud Development Kit (AWSCDK), installiert
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.
Das Diagramm zeigt den folgenden Workflow:
Eine Amazon-Regel CloudWatch für geplante Ereignisse ruft Amazon AppFlow auf.
Amazon AppFlow nimmt Google Analytics-Daten in einen S3-Bucket auf.
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.
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.
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)
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Klonen Sie den Quellcode. | Führen Sie den folgenden Befehl aus, um den Quellcode zu klonen:
| 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:
| 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:
| DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Bootstrap für die Umgebung. |
| DevOps Ingenieur |
Stellen Sie die Daten bereit. | Führen Sie den | DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Überprüfen Sie den Stack-Status. |
| DevOps Ingenieur |
Fehlerbehebung
Problem | Lösung |
---|---|
Die Bereitstellung schlägt während der Erstellung einer | Bestätigen Sie, dass Sie einen AppFlow Amazon-Connector für Google Analytics erstellt und ihm einen Namen gegeben haben Anweisungen finden Sie unter Google Analytics in der AppFlow Amazon-Dokumentation. |
Zugehörige Ressourcen
AWS DataOps Entwicklungskit (DDK)
(GitHub) AWSDDKBeispiele
(GitHub)
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