Szenario 2: Echtzeitnahe Daten für Sicherheitsteams
Das Unternehmen ABC2Badge liefert Sensoren und digitale Ausweise für Firmen- oder Großveranstaltungen wie AWS re:Invent
Bei einer bevorstehenden Veranstaltung wurde ABC2Badge aufgrund der hohen Teilnehmerzahl vom Sicherheitsteam der Veranstaltung gebeten, alle 15 Minuten Daten für die Bereiche mit der höchsten Konzentration auf dem Campus zu sammeln. Dadurch hat das Sicherheitsteam genügend Zeit, um zu reagieren und das Sicherheitspersonal proportional zu den konzentrierten Bereichen zu verteilen. Vor dem Hintergrund dieser neuen Anforderung für das Sicherheitsteam und der Unerfahrenheit beim Aufbau einer Streaming-Lösung, die Daten nahezu in Echtzeit verarbeiten soll, sucht ABC2Badge nach einer einfachen, aber skalierbaren und zuverlässigen Lösung.
Die derzeitige Data-Warehouse-Lösung ist Amazon Redshift
Neue Lösung mit Amazon Kinesis Data Firehose
Amazon Kinesis Data Firehose
Die einfachste Methode, um Streaming-Daten in AWS zu laden, bietet Amazon Kinesis Data Firehose
Kinesis Data Firehose ermöglicht echtzeitnahe Analysen mit vorhandenen Business-Intelligence-Tools und Dashboards, die Sie bereits heute verwenden. Es handelt sich hier um einen vollständig verwalteten Serverless-Service, der automatisch dem Durchsatz Ihrer Daten entsprechend skaliert wird und keine weitere Verwaltung erfordert. Kinesis Data Firehose kann die Daten vor dem Laden in Batches unterteilen, komprimieren und verschlüsseln, um den am Zielort verwendeten Speicherplatz zu minimieren und die Sicherheit zu erhöhen. Es kann auch die Quelldaten mithilfe von AWS Lambda umwandeln und die umgewandelten Daten an Ziele liefern. Sie konfigurieren Ihre Datenproduzenten so, dass die Daten an Amazon Kinesis Data Firehose gesendet werden, das die Daten automatisch an dem von Ihnen angegebenen Ziel bereitstellt.
Senden von Daten an einen Firehose-Bereitstellungsdatenstrom
Um Daten an Ihren Bereitstellungsdatenstrom zu senden, gibt es mehrere Möglichkeiten. AWS bietet SDKs für viele gängige Programmiersprachen, von denen jede APIs für Amazon Kinesis Data Firehose
Verwenden des Amazon Kinesis Agent
Amazon Kinesis Agent ist eine eigenständige Softwareanwendung, die kontinuierlich eine Reihe von Protokolldateien auf neue Daten überwacht, die an den Bereitstellungsdatenstrom gesendet werden sollen. Der Agent kümmert sich automatisch um die Dateirotation, Prüfpunkte, Wiederholungsversuche bei Fehlern und gibt Amazon CloudWatch-Metriken zur Überwachung und Fehlerbehebung des Bereitstellungsdatenstroms aus. Zusätzliche Konfigurationen, wie z. B. die Vorverarbeitung von Daten, die Überwachung mehrerer Dateiverzeichnisse und das Schreiben in mehrere Bereitstellungsdatenströme, können auf den Agent angewendet werden.
Der Agent kann auf Linux- oder Windows-basierten Servern wie Webservern, Protokollservern und Datenbankservern installiert werden. Nach der Installation des Agent geben Sie einfach an, welche Protokolldateien er überwachen und an welchen Bereitstellungsdatenstrom er senden soll. Der Agent sendet dauerhaft und zuverlässig neue Daten an den Bereitstellungsdatenstrom.
Verwenden der API mit AWS SDK und AWS-Services als Quelle
Die Kinesis-Data-Firehose-API bietet zwei Operationen zum Senden von Daten an Ihren Bereitstellungsdatenstrom. PutRecord sendet einen einzelnen Datensatz innerhalb eines Aufrufs. PutRecordBatch kann mehrere Datensätze innerhalb eines Aufrufs senden und einen höheren Durchsatz pro Produzent erreichen. Bei jeder Methode müssen Sie den Namen des Bereitstellungsdatenstroms und den Datensatz oder das Array von Datensätzen angeben, wenn Sie diese Methode verwenden. Weitere Informationen und Beispielcode für die Kinesis-Data Firehose-API-Operationen finden Sie unter Schreiben in einen Firehose-Bereitstellungsdatenstrom mit dem AWS SDK.
Kinesis Data Firehose läuft auch mit Kinesis Data Firehose, CloudWatch Logs, CloudWatch Events, Amazon Simple Notification Service
Verarbeiten von Daten vor der Bereitstellung am Ziel
In manchen Szenarien möchten Sie möglicherweise Ihre Streaming-Daten umwandeln oder optimieren, bevor sie an ihrem Ziel bereitgestellt werden. Datenproduzenten könnten zum Beispiel unstrukturierten Text in jedem Datensatz senden, und Sie müssen ihn in JSON umwandeln, bevor Sie ihn an OpenSearch Service
Kinesis Data Firehose verfügt über eine integrierte Konvertierungsfunktion für Datenformate. Damit können Sie Ihre JSON-Datenströme problemlos in Apache-Parquet- oder Apache-ORC-Dateiformate konvertieren.
Datentransformationsfluss
Um Streaming-Datentransformationen zu ermöglichen, verwendet Kinesis Data Firehose eine Lambda-Funktion, die Sie zur Transformation Ihrer Daten erstellen. Kinesis Data Firehose puffert eingehende Daten auf eine für die Funktion angegebene Puffergröße und ruft dann die angegebene Lambda-Funktion asynchron auf. Die transformierten Daten werden von Lambda an Kinesis Data Firehose gesendet, und Kinesis Data Firehose liefert die Daten an das Ziel.
Konvertierung von Datenformaten
Sie können auch die Datenformatkonvertierung von Kinesis Data Firehose aktivieren, die den JSON-Datenstrom in das Apache-Parquet- oder Apache-ORC-Datenformat konvertiert. Diese Funktion kann nur JSON in das Apache-Parquet- oder Apache-ORC-Datenformat konvertieren. Wenn Ihre Daten im CSV-Format vorliegen, können Sie diese Daten über eine Lambda-Funktion in JSON umwandeln und dann die Datenformatkonvertierung anwenden.
Datenbereitstellung
Kinesis Data Firehose stellt eingehende Daten nahezu in Echtzeit bereit und puffert diese. Nachdem die Schwellenwerte für die Pufferung Ihres Datenstroms erreicht wurden, werden Ihre Daten an das von Ihnen konfigurierte Ziel übermittelt. Es gibt einige Unterschiede in der Art und Weise, wie Kinesis Data Firehose Daten an die einzelnen Ziele liefert, die in diesem Dokument in den folgenden Abschnitten erläutert werden.
Amazon S3
Amazon S3
Datenbereitstellung in Amazon S3
Für die Datenbereitstellung in Amazon S3 verkettet Kinesis Data Firehose mehrere eingehende Datensätze basierend auf der Pufferkonfiguration Ihres Bereitstellungsdatenstroms und stellt sie dann als S3-Objekt in Amazon S3 bereit. Die Häufigkeit der Datenbereitstellung in S3 wird durch die S3-Puffergröße (1 MB bis 128 MB) oder das Pufferintervall (60 Sekunden bis 900 Sekunden) bestimmt, je nachdem, was zuerst eintritt.
Die Datenbereitstellung in Ihrem S3-Bucket kann aus verschiedenen Gründen fehlschlagen. Zum Beispiel könnte der Bucket nicht mehr existieren, oder die AWS Identity and Access Management
Amazon Redshift
Amazon Redshift
Datenbereitstellung in Amazon Redshift
Für die Datenbereitstellung in Amazon Redshift stellt Kinesis Data Firehose zunächst die eingehenden Daten in Ihrem S3-Bucket in dem zuvor beschriebenen Format bereit. Kinesis Data Firehose gibt dann einen Amazon-Redshift-COPY-Befehl aus, um die Daten aus Ihrem S3-Bucket in Ihren Amazon-Redshift-Cluster zu laden.
Die Häufigkeit der COPY-Vorgänge für Daten von S3 nach Amazon Redshift wird davon bestimmt, wie schnell Ihr Amazon-Redshift-Cluster den COPY-Befehl abschließen kann. Für ein Amazon-Redshift-Ziel können Sie beim Erstellen eines Bereitstellungsdatenstroms eine Wiederholungsdauer (0–7200 Sekunden) angeben, um Fehler bei der Datenbereitstellung zu beheben. Bei nicht erfolgreicher Ausführung wiederholt Kinesis Data Firehose den Vorgang für den festgelegten Zeitraum und überspringt den jeweiligen Batch von S3-Objekten. Die Informationen zu den übersprungenen Objekten werden Ihrem S3-Bucket als Manifestdatei im Ordner „Errors/“ (Fehler) bereitgestellt. Sie können diesen für manuelle Backfill-Vorgänge verwenden.
Nachstehend finden Sie ein Architekturdiagramm des Datenflusses von Kinesis Data Firehose zu Amazon Redshift. Obwohl dieser Datenfluss nur für Amazon Redshift gilt, folgt Kinesis Data Firehose ähnlichen Mustern für die anderen Zielspeicherorte.
Datenfluss von Kinesis Data Firehose zu Amazon Redshift
Amazon OpenSearch Service (OpenSearch Service)
OpenSearch Service
Datenbereitstellung in OpenSearch Service
Für die Datenbereitstellung in OpenSearch Service puffert Kinesis Data Firehose eingehende Datensätze basierend auf der Pufferkonfiguration Ihres Bereitstellungsdatenstroms und generiert dann eine OpenSearch-Massenanfrage, um mehrere Datensätze in Ihrem OpenSearch-Cluster zu indizieren. Die Häufigkeit der Datenbereitstellung in OpenSearch Service wird durch die Werte für die OpenSearch-Puffergröße (1 MB bis 100 MB) und das Pufferintervall (60 Sekunden bis 900 Sekunden) bestimmt, je nachdem, was zuerst eintritt.
Sie können beim Erstellen eines Bereitstellungsdatenstroms für das OpenSearch Service-Ziel eine Wiederholungsdauer angeben (0–7200 Sekunden). Kinesis Data Firehose wiederholt den Vorgang für den festgelegten Zeitraum und überspringt anschließend die jeweilige Indexanfrage. Die übersprungenen Dokumente werden Ihrem S3-Bucket im Ordner elasticsearch_failed/ bereitgestellt. Sie können diesen für manuelle Backfill-Vorgänge verwenden.
Amazon Kinesis Data Firehose kann Ihren OpenSearch Service-Index basierend auf einer Zeitdauer rotieren. Je nach gewählter Rotationsoption (NoRotation, OneHour, OneDay, OneWeek oder OneMonth) fügt Kinesis Data Firehose einen Abschnitt des UTC-Ankunftszeitstempels (Coordinated Universal Time, UTC) an den angegebenen Indexnamen an.
Benutzerdefinierter HTTP-Endpunkt oder unterstützter externer Dienstanbieter
Kinesis Data Firehose kann Daten entweder an benutzerdefinierte HTTP-Endpunkte oder an unterstützte Drittanbieter wie Datadog, Dynatrace, LogicMonitor, MongoDB, New Relic, Splunk und Sumo Logic senden.
Benutzerdefinierter HTTP-Endpunkt oder unterstützter externer Dienstanbieter
Damit Kinesis Data Firehose erfolgreich Daten an benutzerdefinierte HTTP-Endpunkte liefern kann, müssen diese Endpunkte Anfragen akzeptieren und Antworten unter Verwendung bestimmter Kinesis-Data-Firehose-Anfrage- und Antwortformate senden.
Wenn Sie Daten an einem HTTP-Endpunkt bereitstellen, der zu einem unterstützten externen Dienstanbieter gehört, können Sie den integrierten AWS Lambda-Service verwenden, um eine Funktion zu erstellen, die den eingehenden Datensatz/die eingehenden Datensätze in das Format transformiert, das dem Format entspricht, das die Integration des Dienstanbieters erwartet.
Für die Häufigkeit der Datenbereitstellung gibt jeder Dienstanbieter eine empfohlene Puffergröße an. Wenden Sie sich an Ihren Dienstanbieter, um weitere Informationen über die empfohlene Puffergröße zu erhalten. Für die Behandlung von Datenbereitstellungsfehlern stellt Kinesis Data Firehose zunächst eine Verbindung mit dem HTTP-Endpunkt her, indem es auf eine Antwort vom Ziel wartet. Kinesis Data Firehose versucht so lange eine Verbindung herzustellen, bis die Wiederholungsdauer abgelaufen ist. Danach betrachtet Kinesis Data Firehose den Vorgang als Datenbereitstellungsfehler und sichert die Daten in Ihrem S3 Bucket.
Übersicht
Kinesis Data Firehose kann Ihre Streaming-Daten dauerhaft an ein unterstütztes Ziel liefern. Es handelt sich um eine vollständig verwaltete Lösung, die wenig oder gar keine Entwicklung erfordert. Für das Unternehmen ABC2Badge war die Verwendung von Kinesis Data Firehose eine logische Wahl. Es verwendete bereits Amazon Redshift als Data-Warehouse-Lösung. Da seine Datenquellen kontinuierlich in Transaktionsprotokolle schrieben, konnte das Unternehmen den Amazon Kinesis Agent nutzen, um diese Daten zu streamen, ohne zusätzlichen Code schreiben zu müssen. Nachdem das Unternehmen ABC2Badge einen Stream von Sensoraufzeichnungen erstellt hat und diese Aufzeichnungen über Kinesis Data Firehose empfängt, kann es diese als Grundlage für den Anwendungsfall des Sicherheitsteams verwenden.