F: Was sind Amazon Kinesis Streams?

Amazon Kinesis Streams ermöglicht Ihnen, benutzerdefinierte Anwendungen zur Verarbeitung oder Analyse von Streaming-Daten für spezielle Anforderungen aufzubauen. Sie können kontinuierlich verschiedene Datentypen wie Klickströme, Anwendungsprotokolle und soziale Medien aus Hunderttausenden von Quellen einem Amazon Kinesis-Stream hinzufügen. Die Daten sind dann innerhalb von Sekunden für Ihre Amazon Kinesis-Anwendungen verfügbar und können aus dem Stream gelesen und dann verarbeitet werden.

F: Was führt Amazon Kinesis Streams für mich durch?

Amazon Kinesis Streams verwaltet Infrastruktur, Speicher, Vernetzung und Konfiguration, die zum Streamen Ihrer Daten mit dem von Ihrer Anwendung benötigten Durchsatzgrad erforderlich sind. Sie brauchen sich keine Gedanken über Bereitstellung, laufende Wartung von Hardware, Software oder anderen Services für Ihre Daten-Streams zu machen. Außerdem repliziert Amazon Kinesis Streams synchron Daten in drei Availability Zones und erzielt so eine hohe Verfügbarkeit und Datenbeständigkeit.

F: Was kann ich mit Amazon Kinesis Streams tun?

Amazon Kinesis Streams dient dazu, Daten schnell von Datenproduzenten abzurufen und anschließend kontinuierlich zu verarbeiten, sei es, um die Daten vor der Ablage in einem Datenspeicher umzuwandeln, Metriken und Analysen in Echtzeit zu erstellen oder komplexere Daten-Streams zur weiteren Verarbeitung abzuleiten. Es folgen typische Szenarien für den Einsatz von Amazon Kinesis Streams:

  • Beschleunigte Protokoll- und Daten-Feed-Aufnahme: Anstatt auf die Zusammenfassung von Daten zu warten, können Ihre Datenproduzenten die Daten in einen Amazon Kinesis-Stream einleiten, sobald sie produziert wurden, wodurch Datenverluste vermieden werden, falls ein Datenproduzent ausfällt. Zum Beispiel können System- und Anwendungsprotokolle kontinuierlich einem Amazon Kinesis-Stream hinzugefügt werden und innerhalb von Sekunden zur Weiterverarbeitung zur Verfügung stehen. 
  • Echtzeit-Metriken und Berichterstellung: Aus Amazon Kinesis-Streaming-Daten können Sie in Echtzeit Metriken extrahieren und Berichte erstellen. Zum Beispiel kann Ihre Amazon Kinesis-Anwendung bei kontinuierlichen Datenströmen an Metriken und Berichten für System- und Anwendungsprotokollen arbeiten und braucht nicht auf einzelne Datenpakete zu warten.
  • Echtzeit-Datenanalyse: Mit Amazon Kinesis Streams können Sie Streaming-Daten in Echtzeit analysieren. Sie können zum Beispiel Klickströme Ihrem Amazon Kinesis-Stream hinzufügen und Ihre Amazon Kinesis-Anwendung in Echtzeit Analysen ausführen lassen, sodass Sie innerhalb von Minuten Einblicke in Ihre Daten gewinnen können und nicht erst nach Stunden oder Tagen. 
  • Komplexe Stream-Verarbeitung: Sie können gerichtete, azyklische Graphen (Directed Acyclic Graphs, DAGs) von Amazon Kinesis-Anwendungen und Daten-Streams erstellen. In diesem Szenario können eine oder mehrere Amazon Kinesis-Anwendungen Daten zur weiteren Verarbeitung einem anderen Amazon Kinesis-Stream hinzufügen, sodass aufeinanderfolgende Stufen der Stream-Verarbeitung ermöglicht werden.

F: Wie verwende ich Amazon Kinesis Streams?

Nachdem Sie sich bei Amazon Web Services angemeldet haben, können Sie Amazon Kinesis Streams wie folgt verwenden:

F: Welche Komponenten umfasst Amazon Kinesis Streams?

Der Durchsatz eines Amazon Kinesis-Streams ist so konzipiert, dass er unbegrenzt skaliert werden kann, indem die Anzahl der Shards innerhalb eines Streams erhöht wird. Allerdings gibt es gewisse Limits, die Sie bei der Nutzung von Amazon Kinesis Streams berücksichtigen müssen:

  • Standardmäßig sind Datensätze eines Streams ab dem Zeitpunkt der Hinzufügung zu einem Stream 24 Stunden lang verfügbar. Sie können dieses Limit durch Aktivierung der Extended Data Retention auf bis zu 7 Tage erhöhen.
  • Die maximale Größe eines Daten-Blobs (Nutzdaten vor der Base64-Kodierung) innerhalb eines Datensatzes beträgt 1 MB. 
  • Ein Shard kann bis zu 1000 PUT-Datensätze pro Sekunde unterstützen.

Weitere Informationen über andere Einschränkungen auf API-Ebene finden Sie unter Amazon Kinesis Streams – Einschränkungen.

F: Inwiefern unterscheidet sich Amazon Kinesis Streams von Amazon SQS?

Amazon Kinesis Streams ermöglichen die Echtzeitverarbeitung gestreamter Big Data. Es bietet die Möglichkeit, Datensätze zu sortieren, sowie Datensätze in derselben Reihenfolge zu lesen bzw. an mehrere Amazon Kinesis-Anwendungen wiederzugeben. Die Amazon Kinesis Client Library (KCL) liefert sämtliche Datensätze für einen bestimmten Partitionsschlüssel für denselben Datensatzprozessor, wodurch es einfacher wird, mehrere Anwendungen aufzubauen, die denselben Amazon Kinesis-Stream lesen (etwa um eine Zählung, Aggregation und Filterung durchzuführen).

Amazon Simple Queue Service (Amazon SQS) bietet eine zuverlässige, hochgradig skalierbare, gehostete Warteschlange zum Speichern von Mitteilungen, während diese zwischen Computern weitergeleitet werden. Mit Amazon SQS können Sie bequem Daten zwischen verteilten Anwendungskomponenten verschieben sowie Anwendungen aufbauen, in denen Nachrichten unabhängig verarbeitet werden (mit Bestätigungs-/Ablehnungssemantik auf Nachrichtenebene), etwa in automatisierten Workflows.

F: Wann sollte ich Amazon Kinesis Streams und wann Amazon SQS verwenden?

Wir empfehlen Amazon Kinesis Streams für Anwendungsfälle, die folgenden Szenarien ähneln:

  • Das Routing zusammengehöriger Datensätze zum selben Datensatzprozessor (etwa beim Streamen von MapReduce). Das Zählen und Aggregieren ist zum Beispiel einfacher, wenn alle Datensätze für einen bestimmten Schlüssel für denselben Datensatzprozessor geleitet werden.
  • Sortieren von Datensätzen. Wenn Sie zum Beispiel Protokolldaten vom Anwendungshost an den Verarbeitungs-/Archivierungshost transferieren und dabei die Sortierung der Protokollanweisungen beibehalten wollen.
  • Die Möglichkeit, dass mehrere Anwendungen gleichzeitig denselben Stream konsumieren. Wenn Sie zum Beispiel eine Anwendung haben, die ein Echtzeit-Dashboard aktualisiert, und eine andere, die Daten in Amazon Redshift archiviert. Sie möchten, dass beide Anwendungen gleichzeitig und unabhängig Daten aus demselben Stream konsumieren.
  • Die Möglichkeit, nach einigen Stunden Datensätze in der gleichen Reihenfolge zu nutzen. Wenn Sie zum Beispiel eine Fakturierungsanwendung haben sowie eine Audit-Anwendung, die einige Stunden nach der Fakturierungsanwendung ausgeführt wird. Da Amazon Kinesis Streams die Daten bis zu 7 Stunden speichern, können Sie die Audit-Anwendung bis zu 7 Stunden nach der Fakturierungsanwendung ausführen.

Wir empfehlen Amazon SQS für Anwendungsfälle, die folgenden Szenarien ähneln:

  • Nachrichtensemantik (etwa Bestätigung/Ablehnung auf Nachrichtenebene) und Zeitbeschränkung für die Sichtbarkeit. Wenn Sie zum Beispiel eine Warteschlange mit Arbeitselementen haben und den erfolgreichen Abschluss jedes einzelnen Elements unabhängig verfolgen wollen. Amazon SQS verfolgt die Bestätigung/Ablehnung, sodass die Anwendung keinen ständigen Checkpoint/Cursor aufrechtzuerhalten braucht. Amazon SQS löscht bestätigte Nachrichten und liefert abgelehnte Nachrichten nach einer konfigurierten Zeitbeschränkung für die Sichtbarkeit erneut aus.
  • Individuelle Nachrichtenverzögerung. Zum Beispiel wenn Sie eine Job-Warteschlange haben und einzelne Jobs mit einer Verzögerung eingeplant werden müssen. Bei Amazon SQS können Sie einzelne Nachrichten mit einer Verzögerung von bis zu 15 Minuten konfigurieren.
  • Gleichzeitigkeit/Durchsatz beim Lesen dynamisch erhöhen. Wenn Sie beispielsweise eine Arbeitswarteschlange haben und mehr Leser hinzufügen möchten, bis der Rückstand aufgeholt ist. Bei Amazon Kinesis Streams können Sie bis zu einer ausreichenden Anzahl von Shards vertikal skalieren (allerdings müssen Sie im Voraus eine ausreichende Anzahl von Shards bereitstellen).
  • Die Fähigkeit von Amazon SQS zum transparenten Skalieren nutzen. Zum Beispiel wenn Sie Anfragen puffern und die Last sich je nach den gelegentlichen Lastspitzen oder dem natürlichen Wachstum Ihres Unternehmens ändert. Da jede gepufferte Anfrage unabhängig verarbeitet werden kann, kann Amazon SQS transparent skalieren, um sich der Last anzupassen, ohne dass Sie Anweisungen bereitstellen müssen.


F: Was ist ein Shard?

Shard ist die Basiseinheit für den Durchsatz eines Amazon Kinesis-Streams. Ein Shard bietet eine Dateneingabekapazität von 1 MB/s und eine Datenausgabekapazität von 2 MB/s. Ein Shard kann bis zu 1 000 PUT-Datensätze pro Sekunde unterstützen. Sie legen die Anzahl der Shards fest, wenn Sie einen Stream einrichten. Beispielsweise können Sie einen Stream mit zwei Shards einrichten. Dieser Stream hat einen Durchsatz von 2 MB/s für die Dateneingabe und 4 MB/s für die Datenausgabe und lässt bis zu 2 000 PUT-Datensätze pro Sekunde zu.Sie können Kennzahlen auf Shard-Ebene in Amazon Kinesis Streams überwachen und Shards aus Ihrem Stream dynamisch hinzufügen oder daraus entfernen, wenn sich der Datendurchsatz ändert, indem Sie den Stream mit neuen Shards versehen.

F: Was ist ein Datensatz?

Ein Datensatz ist die Dateneinheit, die in einem Amazon Kinesis-Stream gespeichert ist. Ein Datensatz besteht aus einer Sequenznummer, einem Partitionsschlüssel und einem Daten-Blob. Ein Daten-Blob sind die Daten von Interesse, die Ihr Datenproduzent einem Stream hinzufügt. Die maximale Größe eines Datenblobs (Nutzdaten vor der Base64-Kodierung) beträgt 1 MB.

F: Was ist ein Partitionsschlüssel?

Ein Partitionsschlüssel wird genutzt, um Datensätze zu trennen und an verschiedene Shards eines Streams zu leiten. Ein Partitionsschlüssel wird von Ihrem Datenproduzenten angegeben, während Daten einem Amazon Kinesis-Stream hinzugefügt werden. Angenommen, Sie haben einen Stream mit zwei Shards (Shard 1 und Shard 2). Nun können Sie Ihren Datenproduzenten so konfigurieren, dass er zwei Partitionsschlüssel verwendet (Schlüssel A und Schlüssel B), sodass alle Datensätze mit dem Schlüssel A zu Shard 1 und alle Datensätze mit Schlüssel B zu Shard 2 hinzugefügt werden. 

F: Was ist eine Sequenznummer?

Eine Sequenznummer ist eine eindeutige Kennung für jeden einzelnen Datensatz. Sequenznummern werden von Amazon Kinesis zugewiesen, wenn ein Datenproduzent den Vorgang PutRecord oder PutRecords aufruft, um einem Amazon Kinesis-Stream Daten hinzuzufügen. Sequenznummern für denselben Partitionsschlüssel steigen im Allgemeinen mit der Zeit. Je länger der Zeitraum zwischen PutRecord oder PutRecords -Anforderungen, desto größer die Sequenznummer.


F: Wie richte ich einen Amazon Kinesis-Stream ein?

Nachdem Sie sich bei Amazon Web Services angemeldet haben, können Sie einen Amazon Kinesis-Stream entweder über die Amazon Kinesis Management Console oder über den Vorgang CreateStream einrichten.

F: Wie lege ich den Durchsatz meines Amazon Kinesis-Streams fest?

Der Durchsatz eines Amazon Kinesis-Streams wird von der Anzahl der Shards innerhalb eines Streams bestimmt. Befolgen Sie die Schritte weiter unten und schätzen Sie die anfängliche Anzahl der Shards, die Ihr Stream benötigt. Beachten Sie, dass Sie die Anzahl der Shards in Ihrem Stream über Amazon Kinesis Resharding dynamisch anpassen können.

  1. Schätzen Sie die durchschnittliche Größe des Datensatzes, der in den Stream geschrieben wird, in Kilobyte (KB), gerundet auf das nächste ganze Kilobyte. (Durchschnittliche_Datengröße_in_KB)
  2. Schätzen Sie die Anzahl von Datensätzen, die pro Sekunde in den Stream geschrieben werden. (Anzahl_von_Datensätzen_pro_Sekunde)
  3. Legen Sie die Anzahl der Amazon Kinesis- Anwendungen fest, die gleichzeitig und unabhängig Daten aus dem Amazon Kinesis-Stream nutzen. (Anzahl_der_Nutzer)
  4. Berechnen Sie die eingehende Schreibbandbreite in KB (Eingehende_Schreibbandbreite_in_KB). Sie ergibt sich aus Durchschnittliche_Datengröße_in_KB multipliziert mit Anzahl_von_Datensätzen_pro_Sekunde.
  5. Berechnen Sie die ausgehende Lesebandbreite in KB (Ausgehende_Schreibbandbreite_in_KB). Sie ergibt sich aus Eingehende_Schreibbandbreite_in_KB multipliziert mit Anzahl_der_Nutzer.

Anschließend können Sie die von Ihrem Amazon Kinesis-Stream anfänglich benötigte Anzahl der Shards (number_of_shards) mithilfe der folgenden Formel berechnen:

Anzahl_der_Shards = max. (Eingehende_Schreibbandbreite_in_KB : 1000, Ausgehende_Schreibbandbreite_in_KB : 2000)

F: Wie hoch ist der Mindestdurchsatz, den ich für meinen Amazon Kinesis-Stream anfordern kann?

Der Durchsatz eines Amazon Kinesis-Streams wird in Shards-Einheiten skaliert. Ein einzelner Shard ist der kleinste Durchsatz eines Streams, der einen Dateneingang von 1 MB/s und einen Datenausgang von 2 MB/s bietet.

F: Wie hoch ist der maximale Durchsatz, den ich für meinen Amazon Kinesis-Stream anfordern kann?

Der Durchsatz eines Amazon Kinesis-Streams ist so konzipiert, dass er unbegrenzt skaliert werden kann. Standardmäßig kann jedes Konto 10 Shards pro Region bereitstellen. Sie können das Formular Amazon Kinesis Streams Limits verwenden, wenn Sie mehr als 10 Shards in einer Region anfordern möchten.

F: Wie kann die Datensatzgröße den Durchsatz meines Amazon Kinesis-Streams beeinflussen?

Ein Shard bietet eine Dateneingangsrate von 1 MB/s und unterstützt bis zu 1 000 PUT-Datensätze pro Sekunde. Wenn also die Datensatzgröße kleiner als 1 KB ist, beträgt die tatsächliche Dateneingangsrate eines Shards weniger als 1 MB/s, begrenzt durch die maximale Anzahl der PUT-Datensätze pro Sekunde.


F: Wie füge ich Daten einem Amazon Kinesis-Stream hinzu?

Sie können einem Amazon Kinesis-Stream Daten über PutRecord- und PutRecords-Vorgänge oder über die Amazon Kinesis Producer Library (KPL) oder über Amazon Kinesis Agent hinzufügen.

F: Worin besteht der Unterschied zwischen PutRecord und PutRecords?

Mit dem PutRecord-Vorgang ist ein einzelner Datensatz in einem API-Aufruf möglich; die PutRecords-Vorgänge lassen mehrere Datensätze in einem API-Aufruf zu. Weitere Informationen zu den Vorgängen PutRecord und PutRecords finden Sie unter PutRecord und PutRecords.

F: Was ist die Amazon Kinesis Producer Library (KPL)?

Bei der Amazon Kinesis Producer Library (KPL) handelt es sich um eine bedienfreundliche und hochkonfigurierbare Bibliothek, mit der Sie Daten in den Amazon Kinesis-Stream einleiten können. KPL ist eine einfache, asynchrone und verlässliche Oberfläche, mit der Sie unter Einsatz minimaler Client-Ressourcen schnell einen höheren Produzentendurchsatz erzielen.

F: Welche Programmiersprachen oder Plattformen kann ich verwenden, um auf die Amazon Kinesis-API zuzugreifen?

Die Amazon Kinesis-API ist in den Amazon Web Services-SDKs verfügbar. Eine Liste der Programmiersprachen oder Plattformen für die Amazon Web Services-SDKs finden Sie unter Tools für Amazon Web Services.

F: In welcher Programmiersprache ist die Amazon Kinesis Producer Library (KPL) verfügbar?

Der Kern der Amazon Kinesis Producer Library (KPL) wurde mit einem C++ Modul erstellt und kann auf jeder Plattform mit einem aktuellen C++ Kompilierer verwendet werden. Die Bibliothek ist aktuell in einer Java-Oberfläche verfügbar.Wir beabsichtigen, Unterstützung für andere Programmiersprachen hinzuzufügen.

F: Was ist Amazon Kinesis Agent?

Amazon Kinesis Agent ist eine fertige Java-Anwendung, die eine einfache Methode zur Erfassung von Daten und deren Einspielen in Ihren Amazon Kinesis-Stream ermöglicht. Sie können den Agenten in Serverumgebungen auf Linux-Basis, auf Protokollservern und Datenbankservern installieren. Der Agent überwacht bestimmte Dateien und sendet fortlaufend Daten in Ihren Datenstrom. Weitere Informationen finden Sie unter Schreiben mit Agenten

F: Welche Plattformen unterstützt Amazon Kinesis Agent?

Amazon Kinesis Agent unterstützt derzeit Amazon Linux und Red Hat Enterprise Linux.

F: Wo bekomme ich Amazon Kinesis Agent?

Sie können Amazon Kinesis Agent mit dem folgenden Befehl und Link herunterladen und installieren:

Auf Amazon Linux: sudo yum install –y aws-kinesis-agent

Auf Red Hat Enterprise Linux: sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm

Aus GitHub: awlabs/amazon-kinesis-agent

F: Wie verwende ich Amazon Kinesis Agent?

Nach dem Installieren von Amazon Kinesis Agent auf Ihren Servern können Sie ihn so konfigurieren, dass er bestimmte Dateien auf einer Festplatte überwacht und neue Daten dann kontinuierlich zu ihrem Amazon Kinesis-Stream sendet. Weitere Informationen finden Sie unter Schreiben mit Agenten

F: Was geschieht, wenn die Kapazitätsgrenzen eines Amazon Kinesis-Streams überschritten werden, während der Datenproduzent dem Stream Daten hinzufügt?

Die Kapazitätsgrenzen eines Amazon Kinesis-Streams werden von der Anzahl der Shards innerhalb eines Streams bestimmt. Die Grenzen können entweder vom Datendurchsatz oder von der Anzahl der PUT-Datensätze überschritten werden. Wenn die Kapazitätsgrenzen überschritten werden, werden PUT-Datenaufrufe mit der Ausnahme ProvisionedThroughputExceeded zurückgewiesen. Falls dies durch einen vorübergehenden Anstieg der Eingangsdatenrate des Streams verursacht wurde, werden die Anforderungen durch erneute Versuche seitens des Datenproduzenten schließlich erfüllt. Falls dies durch einen anhaltenden Anstieg der Eingangsdatenrate des Streams verursacht wurde, sollten Sie die Anzahl der Shards innerhalb Ihres Streams erhöhen, damit ausreichende Kapazitäten vorhanden sind und die PUT-Datenaufrufe konsistent abgeschlossen werden. In beiden Fällen können Sie anhand der Amazon CloudWatch-Metriken mehr über die Änderung der Eingangsdatenrate des Streams und das Auftreten der Ausnahme ProvisionedThroughputExceeded erfahren.

F: Welche Daten werden bei der Ermittlung des Datendurchsatzes eines Amazon Kinesis-Streams während eines Aufrufs von PutRecord oder PutRecords berücksichtigt?

Daten-Blob, Partitionsschlüssel und Stream-Name sind die Pflichtparameter eines Aufrufs von PutRecord oder PutRecords. Die Größe Ihres Datenblobs (vor der Base64-Kodierung) und der Partitionsschlüssel werden bei der Ermittlung des Datendurchsatzes Ihres Amazon Kinesis-Streams berücksichtigt, der von der Anzahl der Shards innerhalb des Streams bestimmt wird.


F: Was ist eine Amazon Kinesis-Anwendung?

Eine Amazon Kinesis-Anwendung ist ein Datenkonsument, der Daten aus einem Amazon Kinesis-Stream liest und verarbeitet. Sie können Ihre Anwendungen entweder mithilfe der Amazon Kinesis-API oder der Amazon Kinesis Client Library (KCL) erstellen.

F: Was ist die Amazon Kinesis Client Library (KCL)?

Die Amazon Kinesis Client Library (KCL) für Java | Python | Ruby | Node.js | .NET ist eine vordefinierte Bibliothek, mit deren Hilfe Sie bequem Amazon Kinesis-Anwendungen zum Lesen und Verarbeiten von Daten aus einem Amazon Kinesis-Stream entwickeln können. Die KCL übernimmt automatisch komplexe Aufgaben wie die Anpassung an Änderungen beim Stream-Volumen, den Lastausgleich für Streaming-Daten, die Koordination verteilter Services und fehlertolerante Datenverarbeitung. Die KCL ermöglicht, dass Sie sich beim Entwickeln von Anwendungen ganz auf die Geschäftslogik konzentrieren können.

F: Was ist die Amazon Kinesis Connector Library?

Die Amazon Kinesis Connector Library ist eine vorgefertigte Bibliothek, mit deren Hilfe Sie Amazon Kinesis Streams bequem in andere AWS-Services und Tools anderer Hersteller integrieren können. Die Amazon Kinesis Client Library (KCL) für Java | Python | Ruby | Node.js | .NET ist für die Verwendung der Amazon Kinesis Connector Library erforderlich. Die aktuelle Version dieser Bibliothek bietet Konnektoren für Amazon DynamoDB, Amazon Redshift, Amazon S3 und Elasticsearch. Die Bibliothek umfasst auch Muster-Konnektoren für jeden Typ sowie Apache Ant-Build-Dateien zum Ausführen der Muster.

F: Was ist Amazon Kinesis Storm Spout?

Amazon Kinesis Storm Spout ist eine vorgefertigte Bibliothek, mit deren Hilfe Sie Amazon Kinesis Streams bequem in Apache Storm integrieren können. Die aktuelle Version von Amazon Kinesis Storm Spout ruft Daten aus dem Amazon Kinesis-Stream ab und gibt diese als Tupel aus. Sie fügen Spout Ihrer Storm-Topologie hinzu, um Amazon Kinesis Streams als zuverlässigen, skalierbaren, Stream-Erfassungs-, Speicher- und Wiedergabeservice zu nutzen.

F: In welcher Programmiersprache sind Amazon Kinesis Client Library (KCL), Amazon Kinesis Connector Library und Amazon Kinesis Storm Spout verfügbar?

Die Amazon Kinesis Client Library (KCL) steht derzeit in JavaPython, Ruby, Node.js und .NET zur Verfügung. Amazon Kinesis Connector Library und Amazon Kinesis Storm Spout sind derzeit in Java verfügbar. Wir beabsichtigen, Unterstützung für andere Programmiersprachen hinzuzufügen.

F: Muss ich für meine Amazon Kinesis-Anwendung die Amazon Kinesis Client Library (KCL) verwenden?

Nein, Sie können auch die Amazon Kinesis-API verwenden, um Ihre Amazon Kinesis-Anwendung zu entwickeln. Allerdings empfehlen wir, sofern möglich, die Amazon Kinesis Client Library (KCL) für Java | Python | Ruby | Node.js | .NET zu nutzen, weil sie umfassende Aufgaben im Zusammenhang mit verteilter Stream-Verarbeitung bewältigt, sodass es produktiver wird, Amazon Kinesis-Anwendungen zu entwickeln.

F: Wie interagiert die Amazon Kinesis Client Library (KCL) mit einer Amazon Kinesis-Anwendung?

Die Amazon Kinesis Client Library (KCL) für Java | Python | Ruby | Node.js | .NET fungiert als Vermittler zwischen Amazon Kinesis Streams und Ihrer Amazon Kinesis-Anwendung. Die KCL verwendet die IRecordProcessor-Schnittstelle, um mit Ihrer Anwendung zu kommunizieren. Ihre Anwendung implementiert diese Schnittstelle und die KCL führt mithilfe der Methoden in dieser Schnittstelle Aufrufe in Ihrem Anwendungscode aus.

Weitere Hinweise zur Entwicklung von Amazon Kinesis-Anwendungen mit der KCL finden Sie unter Developing Consumer Applications for Amazon Kinesis Using the Amazon Kinesis Client Library.

F: Was sind ein von der Amazon Kinesis Client Library (KCL) generierter Worker und ein Datensatzprozessor?

Eine Amazon Kinesis-Anwendung kann mehrere Anwendungs-Instances haben und Worker sind Verarbeitungseinheiten, die den einzelnen Anwendungs-Instances zugeordnet sind. Ein Datensatzprozessor ist die Verarbeitungseinheit, die Daten von einem Shard eines Amazon Kinesis-Streams verarbeitet. Ein Worker kann einem oder mehreren Datensatzprozessoren zugeordnet sein. Ein Datensatzprozessor ist einem Shard zugeordnet und verarbeitet Datensätze aus diesem Shard.

Beim Start ruft eine Amazon Kinesis-Anwendung die Amazon Kinesis Client Library (KCL) für Java | Python | Ruby | Node.js | .NETauf, um einen Worker zu instanziieren. Mit dem Aufruf erhält die KCL Konfigurationsdaten für die Anwendung, wie etwa den Namen des Streams und die AWS-Anmeldeinformationen. Dieser Aufruf übergibt auch eine Referenz an eine IRecordProcessorFactory-Implementierung. Die KCL verwendet diese Factory, um nach Bedarf neue Datensatzprozessoren einzurichten, die Daten aus dem Stream verarbeiten. Die KCL kommuniziert über die IRecordProcessor-Schnittstelle mit diesen Datensatzprozessoren.

F: Wie speichert die Amazon Kinesis Client Library (KCL) Nachverfolgungsdatensätze, die von einer Amazon Kinesis-Anwendung verarbeitet wurden?

Die Amazon Kinesis Client Library (KCL) für Java | Python | Ruby | Node.js | .NET erstellt automatisch eine Amazon DynamoDB-Tabelle für jede Amazon Kinesis-Anwendung, um Statusinformationen nachzuverfolgen und zu verwalten, wie etwa Resharding-Ereignisse und Prüfpunkte für Sequenznummern. Die DynamoDB-Tabelle erhält den Namen der Anwendung, sodass Sie sicherstellen müssen, dass Ihr Anwendungsname nicht mit vorhandenen DynamoDB-Tabellen im selben Konto innerhalb derselben Region in Konflikt steht.

Alle demselben Anwendungsnamen zugeordneten Worker arbeiten zusammen am selben Amazon Kinesis-Stream. Wenn Sie eine zusätzliche Instanz desselben Anwendungscodes ausführen, jedoch mit einem anderen Anwendungsnamen, behandelt die KCL die zweite Instance als eine vollständig getrennte Anwendung, die ebenfalls mit demselben Amazon Kinesis-Stream arbeitet.

Beachten Sie, dass Ihr Konto mit den Kosten im Zusammenhang mit der Amazon DynamoDB-Tabelle zusätzlich zu den Kosten für Amazon Kinesis Streams belastet wird.

Weitere Hinweise dazu, wie die KCL den Status einer Amazon Kinesis-Anwendung nachverfolgt, finden Sie unter Tracking Amazon Kinesis Application state.

F: Wie kann ich die Verarbeitungskapazität meiner Amazon Kinesis-Anwendung mithilfe der Amazon Kinesis Client Library (KCL) automatisch vertikal skalieren?

Sie können mehrere Instances Ihrer Amazon Kinesis-Anwendung einrichten und diese Anwendungs-Instances über eine Reihe von Amazon EC2-Instances ausführen, die Teil einer Auto Scaling-Gruppe sind. Wenn der Verarbeitungsbedarf ansteigt, wird automatisch eine Amazon EC2 Instance instanziiert, die Ihre Anwendungs-Instance ausführt. Die Amazon Kinesis Client Library (KCL) für Java | Python | Ruby | Node.js | .NET generiert einen Worker für diese neue Instance und verschiebt Datensatzprozessoren automatisch von überlasteten vorhandenen Instances in diese neue Instance.

F: Warum gibt die GetRecords-API ein leeres Ergebnis zurück, obwohl mein Amazon Kinesis-Stream Daten enthält?

Ein möglicher Grund ist, dass an der vom aktuellen Shard Iterator angegebenen Position kein Datensatz vorhanden ist. Dies kann auftreten, wenn Sie TRIM_HORIZON als Shard Iterator-Typ verwenden. Ein Amazon Kinesis-Stream repräsentiert einen kontinuierlichen Datenstrom. Sie müssen den Vorgang GetRecords in einer Schleife aufrufen. Dann wird der Datensatz zurückgegeben, wenn der Shard Iterator zu der Position gelangt, an der der Datensatz gespeichert ist.

F: Was bedeutet der Wert ApproximateArrivalTimestamp, der vom Vorgang GetRecords zurückgegeben wird?

Jeder Datensatz enthält einen Wert namens ApproximateArrivalTimestamp. Der Wert wird festgesetzt, wenn der Datensatz empfangen wurde und von Amazon Kinesis gespeichert wird. Der Zeitstempel hat eine Genauigkeit von einer Millisekunde und die Richtigkeit wird nicht garantiert. Datensätze in einer Shard oder in einem Stream haben möglicherweise fehlerhafte Zeitstempel.

F: Was geschieht, wenn die Kapazitätsgrenzen eines Amazon Kinesis-Streams überschritten werden, während die Amazon Kinesis-Anwendung Daten aus dem Stream liest?

Die Kapazitätsgrenzen eines Amazon Kinesis-Streams werden von der Anzahl der Shards innerhalb eines Streams bestimmt. Die Grenzen können entweder vom Datendurchsatz oder von der Anzahl der READ-Datenaufrufe überschritten werden. Wenn die Kapazitätsgrenzen überschritten werden, werden die READ-Datenaufrufe mit der Ausnahme ProvisionedThroughputExceeded zurückgewiesen. Falls dies durch einen vorübergehenden Anstieg der Ausgangsdatenrate des Streams verursacht wurde, werden die Anforderungen durch erneute Versuche seitens der Amazon Kinesis-Anwendung schließlich erfüllt. Falls dies durch einen anhaltenden Anstieg der Ausgangsdatenrate des Streams verursacht wurde, sollten Sie die Anzahl der Shards innerhalb Ihres Streams erhöhen, damit ausreichende Kapazitäten vorhanden sind und die READ-Datenaufrufe konsistent abgeschlossen werden. In beiden Fällen können Sie anhand der Amazon CloudWatch-Metriken mehr über die Änderung der Ausgangsdatenrate des Streams und das Auftreten der Ausnahme ProvisionedThroughputExceeded erfahren.


F: Wie kann ich den Durchsatz meines Amazon Kinesis-Streams ändern?

Sie haben zwei Möglichkeiten, um den Streaming-Durchsatz zu verändern. Skalieren Sie entweder mithilfe der UpdateShardCount-API oder der AWS Management Console die Anzahl der Shards in einem Stream, oder ändern Sie den Durchsatz eines Amazon Kinesis-Streams, indem Sie die Anzahl der Shards innerhalb des Streams (Resharding) anpassen.  

F: Wie lange dauert es, den Durchsatz meines Amazon Kinesis-Stream mit UpdateShardCount oder der AWS Management Console zu ändern?

In der Regel werden angeforderte Skalierungen innerhalb weniger Minuten vorgenommen. Größere Skalierungen dauern länger als kleinere.

F: Welche Einschränkungen gibt es bei UpdateShardCount?

Informationen zu den Einschränkungen bei UpdateShardCount finden Sie in der Amazon Kinesis Streams Service API Reference.

F: Bleibt Amazon Kinesis Streams verfügbar, wenn ich den Durchsatz meines Amazon Kinesis-Streams mittels UpdateShardCount oder per Resharding ändere?

Ja. Sie können Ihrem Amazon Kinesis-Stream weiterhin Daten hinzufügen oder daraus lesen, während Sie den Streaming-Durchsatz mit UpdateShardCount oder per Resharding ändern.

F: Was bedeutet Resharding?

Resharding ist das Verfahren, mit dem Sie Ihren Stream mithilfe einer Reihe von Shard Splits oder Merges skalieren. Bei einem Shard Split wird ein einzelner Shard in zwei Shards aufgeteilt, wodurch der Stream-Durchsatz erhöht wird. Bei einem Shard Merge werden zwei Shards zu einem einzigen Shard zusammengeführt, wodurch der Stream-Durchsatz gesenkt wird. Weitere Informationen finden Sie unter Resharding a Stream im Amazon Kinesis Streams Developer Guide.

F: Wie oft kann ich den Durchsatz meines Amazon Kinesis-Streams per Resharding ändern und wie lange dauert eine Änderung?

Ein Resharding-Vorgang, wie etwa ein Shard Split oder Shard Merge, dauert nur wenige Sekunden. Sie können jeweils nur einen Resharding-Vorgang durchführen. Deshalb dauert es bei einem Amazon Kinesis-Stream mit nur einem Shard nur wenige Sekunden, den Durchsatz durch Aufteilen eines Shards zu verdoppeln. Bei einem Stream mit 1000 Shards dauert es 30.000 Sekunden (8,3 Stunden), den Durchsatz durch Aufteilen von 1000 Shards zu verdoppeln. Wir empfehlen, den Durchsatz Ihres Streams im Voraus zu erhöhen, wenn zusätzlicher Durchsatz erforderlich ist.

F: Wie kann ich die Datenaufbewahrung meines Amazon Kinesis-Streams ändern?

Standardmäßig werden Ihre Daten von Amazon Kinesis bis zu 24 Stunden lang gespeichert. Sie können diese Datenaufbewahrungsdauer durch Aktivierung der erweiterten Datenaufbewahrung (Extended Data Retention) auf bis zu 7 Tage erhöhen.

Weitere Informationen über die erweiterte Datenaufbewahrung finden Sie unter Ändern der Datenbereithaltungszeit.

F: Wie überwache ich Betrieb und Leistung meines Amazon Kinesis-Streams?

In der Amazon Kinesis Streams Management Console werden wichtige Betriebs- und Leistungsmetriken angezeigt, wie etwa Durchsatz bei Dateneingang und ‑ausgang Ihrer Amazon Kinesis-Streams. Amazon Kinesis Streams ist auch in Amazon CloudWatch integriert, sodass Sie CloudWatch-Metriken für Ihre Streams und Shards innerhalb dieser Streams sammeln, anzeigen und analysieren können. Weitere Informationen über Amazon Kinesis Streams-Metriken finden Sie unter Monitoring Amazon Kinesis Streams with Amazon CloudWatch.

Bitte beachten Sie, dass alle Stream-Ebenen-Metriken kostenlos sind. Alle aktivierten Shard-Ebenen-Metriken werden gemäß Amazon CloudWatch – Preise in Rechnung gestellt.  

F: Wie kann ich den Zugriff auf meinen Amazon Kinesis-Stream verwalten und steuern?

Amazon Kinesis Streams ist mit AWS Identity and Access Management (IAM) kombiniert, einem Service, mit dessen Hilfe Sie den Zugriff auf Ihre AWS-Services und ‑Ressourcen für Ihre Benutzer sicher steuern können. Sie können zum Beispiel eine Richtlinie einrichten, der zufolge nur ein bestimmter Benutzer bzw. eine Gruppe Daten dem Amazon Kinesis-Stream hinzufügen darf. Weitere Informationen zu Zugriffsverwaltung und -steuerung Ihres Streams finden Sie unter Controlling Access to Amazon Kinesis Streams Resources using IAM.

F: Wie kann ich API-Aufrufe an meinen Amazon Kinesis-Stream für Sicherheitsanalysen und Fehlerbehebung protokollieren?

Amazon Kinesis ist mit AWS CloudTrail integriert, einem Service, der Aufrufe von AWS-APIs für Ihr Konto aufzeichnet und Protokolldateien an Sie übermittelt. Weitere Informationen zur Protokollierung von API-Aufrufen sowie eine Liste der unterstützten Amazon Kinesis-API-Vorgänge finden Sie unter Logging Amazon Kinesis API calls Using Amazon CloudTrail.

F: Wie kann ich meine Amazon Kinesis-Streams und die damit verbundenen Kosten effizient verwalten?

In Amazon Kinesis Streams können Sie Ihre Amazon Kinesis-Streams mit Tags versehen, wodurch das Ressourcen- und Kostenmanagement vereinfacht wird. Ein Tag ist ein benutzerdefiniertes Label in Form eines Schlüssel-Wert-Paares, mit dessen Hilfe Sie AWS-Ressourcen organisieren können. Sie können Ihre Streams zum Beispiel nach Kostenstellen mit Kategorien versehen, anhand derer Sie Ihre Amazon Kinesis Streams-Kosten kategorisieren und nachverfolgen können. Weitere Informationen über Tags für Amazon Kinesis Streams finden Sie unterTagging Your Amazon Kinesis Streams.

F: Wie kann ich die Nutzung meines Shard-Limits ermitteln?

Sie können die Nutzung Ihres Shard-Limits für ein Konto mithilfe der DescribeLimits-API ermitteln. Die DescribeLimits-API gibt Auskunft über das Shard-Limit und die Anzahl der geöffneten Shards in Ihrem Konto. Um Ihr Shard-Limit zu erhöhen, fordern Sie einfach eine Limiterhöhung an.


F: Wenn ich Kinesis Streams verwende, wie sicher sind meine Daten?

Kinesis ist standardmäßig sicher. Nur die Konten- und Streambesitzer haben Zugang zu den von ihnen erstellten Kinesis-Ressourcen. Kinesis unterstützt Funktionen zur Benutzerauthentifizierung, um den Zugriff auf die Daten zu kontrollieren. Sie können AWS IAM-Richtlinien verwenden, um selektiv Benutzern und Benutzergruppen Zugriffsrechte zu erteilen. Sie können Ihre Daten über SSL-Endpunkte mithilfe des HTTPS-Protokolls sicher in Kinesis einleiten und aus Kinesis holen. Wenn Sie zusätzliche Sicherheit brauchen, können Sie serverseitige Verschlüsselung mit AWS KMS-Masterschlüsseln verwenden, um in Ihrem Stream gesicherte Daten zu verschlüsseln. AWS KMS erlaubt Ihnen, in AWS erzeugte KMS-Masterschlüssel für die Verschlüsselung zu verwenden oder Ihren eigenen Masterschlüssel in AWS KMS mitzubringen, wenn Sie dies bevorzugen. Schließlich können Sie Ihre eigenen Verschlüsselungsbibliotheken zur Verschlüsselung von Daten auf der Clientseite verwenden, bevor Sie die Daten in Kinesis einspeisen.

F: Kann ich über meine Amazon Virtual Private Cloud (VPC) privat auf die Kinesis Streams-APIs zugreifen, ohne öffentliche IP-Adressen verwenden zu müssen?

Ja, Sie können privat über Ihre Amazon Virtual Private Cloud (VPC) auf die Kinesis Streams-APIs zugreifen, indem Sie VPC-Endpunkte erstellen. Mit VPC-Endpunkten wird das Routing zwischen der VPC und Kinesis Streams durch das AWS-Netzwerk gesteuert, ohne dass ein Internet-Gateway, ein NAT-Gateway oder eine VPN-Verbindung erforderlich ist. Die neueste Generation der von Kinesis Streams verwendeten VPC-Endpunkte wird von AWS PrivateLink unterstützt. Diese Technologie ermöglicht die private Konnektivität zwischen AWS-Services, indem Elastic Network Interfaces (ENI) mit privaten IP-Adressen in Ihren VPCs genutzt werden. Weitere Informationen zu PrivateLink erhalten Sie in der PrivateLink-Dokumentation


F: Kann ich die Daten, die ich in einen Kinesis-Stream einleite, verschlüsseln?

Ja, und es gibt zwei Möglichkeiten zur Verschlüsselung der Daten, die Sie in einen Kinesis-Stream einleiten. Sie können serverseitige Verschlüsselung verwenden; dabei handelt es sich um eine voll-verwaltete Funktion, die Daten automatisch ver- und entschlüsselt, während Sie diese in den Stream einleiten oder herausholen. Oder Sie können verschlüsselte Daten an einen Stream schreiben, indem Sie auf der Clientseite ver- und entschlüsseln.

F: Warum sollte ich eine serverseitige Verschlüsselung anstatt einer clientseitigen Verschlüsselung verwenden?

Kunden bevorzugen aus folgenden Gründen häufig eine serverseitige Verschlüsselung gegenüber einer clientseitigen Verschlüsselung:

  • Es ist schwierig, eine clientseitige Verschlüsselung durchzusetzen
  • Sie möchten eine zweite Sicherheitsebene zusätzlich zur clientseitigen Verschlüsselung
  • Es ist schwierig, clientseitige Schlüsselverwaltungs-Schemen zu implementieren

F: Was ist die serverseitige Verschlüsselung?

Die serverseitige Verschlüsselung für Kinesis Streams verschlüsselt Daten automatisch mithilfe eines benutzerdefinierten AWS KMS-Masterschlüssels (CMK), bevor sie auf die Speicherebene des Streams geschrieben werden und entschlüsselt die Daten, nachdem sie aus dem Speicher geholt wurden. Die Verschlüsselung macht Schreibvorgänge unmöglich und Nutzlasten und Partitionsschlüssel unlesbar, außer der Benutzer, der auf den Stream schreibt oder daraus liest, verfügt über die Berechtigung, den für die Verschlüsselung auf dem Stream ausgewählten Schlüssel zu nutzen. Deshalb kann eine serverseitige Verschlüsselung das Erfüllen interner Sicherheits- und Compliance-Anforderungen beim Verwalten Ihrer Daten vereinfachen.

Bei einer serverseitigen Verschlüsselung brauchen sich Anwendungen auf der Clientseite (Produzenten und Verbraucher) der Verschlüsselung nicht bewusst sein; sie müssen CMKs oder kryptografische Vorgänge nicht verwalten, und Ihre Daten sind verschlüsselt, wenn sie im Kinesis Streams Service gespeichert oder in Bewegung sind. Alle von der serverseitigen Verschlüsselungsfunktion verwendeten CMKs werden vom AWS KMS bereitgestellt. AWS KMS erleichtert die Verwendung eines AWS-verwalteten CMK für Kinesis (eine "One-Click"-Verschlüsselungsmethode), Ihres eigenen, vom AWS KMS erzeugten CMK oder eines CMK, den Sie zur Verschlüsselung importiert haben.

F: Gibt es ein Handbuch "Erste Schritte" für die serverseitige Verschlüsselung?

Ja, es gibt ein Handbuch "Erste Schritte" in der Benutzer-Dokumentation.

F: Hat die serverseitige Verschlüsselung Auswirkungen auf die Interaktion zwischen meinen Anwendungen und Kinesis Streams?

Möglicherweise. Das hängt vom Schlüssel ab, den Sie für die Verschlüsselung und die Berechtigungen zum Verwalten des Zugriffs auf den Schlüssel verwenden.

  • Wenn Sie den AWS-verwalteten CMK für Kinesis (Schlüssel-Alias = aws/kinesis) verwenden, hat die Aktivierung oder Deaktivierung der Verschlüsselung mit diesem Schlüssel keine Auswirkungen auf Ihre Anwendungen.
  • Wenn Sie einen anderen Masterschlüssel verwenden, wie einen benutzerdefinierten AWS KMS-Masterschlüssel oder einen, den Sie in den AWS KMS-Service importiert haben, und wenn Ihre Produzenten und Verbraucher von einem Stream keine Berechtigung zur Verwendung des für die Verschlüsselung eingesetzten AWS KMS CMK haben, werden Ihre PUT- und GET-Anforderungen fehlschlagen. Bevor Sie eine serverseitige Verschlüsselung verwenden können, müssen Sie AWS KMS-Schlüsselrichtlinien so konfigurieren, dass sie das Verschlüsseln und Entschlüsseln von Nachrichten erlauben. Bitte konsultieren Sie für Beispiele und weitere Informationen zu AWS KMS-Berechtigungen AWS KMS API-Berechtigungen: Actions and Resources Reference im AWS Key Management Service Developer Guide oder die Berechtigungsrichtlinien in der Kinesis Streams-Benutzer-Dokumentation zur serverseitigen Verschlüsselung.

F: Fallen zusätzliche Kosten bei der Verwendung einer serverseitigen Verschlüsselung an?

Ja, wenn Sie jedoch den AWS-verwalteten CMK für Kinesis verwenden und das kostenlose Nutzungskontingent der KMS API nicht überschreiten, dann ist Ihre Nutzung der serverseitigen Verschlüsselung kostenlos. Im Folgenden werden die Kosten durch Ressourcen beschrieben:

Schlüssel:

  • Der AWS-verwaltete CMK für Kinesis (Alias = "aws/kinesis") ist kostenlos.
  • Von Benutzern generierte KMS-Schlüssel unterliegen den KMS-Schlüssel-Kosten. Weitere Informationen.

KMS-API-Nutzung:

  • Für jeden CMK (auch für die benutzerdefinierten) fallen API-Nutzungsgebühren an. Kinesis Streams ruft die KMS bei der Rotation der Datenschlüssen ungefähr alle 5 Minuten auf. In einem Monat mit 30 Tagen sollten sich die Gesamtkosten der von Kinesis Streams initiierten KMS API-Aufrufe auf wenige Euro belaufen. Bitte beachten Sie, dass diese Kosten mit der Anzahl an Anmeldedaten, die Sie für Ihre Datenproduzenten und -verbraucher verwenden, steigen, da für die einzelnen Anmeldedaten je ein individueller API-Aufruf an AWS KMS erforderlich ist. Wenn Sie die IAM-Rolle für die Authentifizierung verwenden, werden bei jedem Aufruf zu Übernahme der Rolle individuelle Benutzeranmeldedaten erstellt und Sie möchten die vom Aufruf zu Übernahme der Rolle generierten Benutzeranmeldedaten möglicherweise cachen, um KMS-Kosten zu sparen.

F: Welche AWS-Regionen bieten serverseitige Verschlüsselung für Kinesis Streams an?

Die serverseitige Verschlüsselung von Kinesis Streams ist in der AWS GovCloud-Region und in allen öffentlichen Regionen, ausgenommen China (Peking), verfügbar.

F: Wie starte, aktualisiere oder entferne ich serverseitige Verschlüsselung von einem Stream?

All diese Vorgänge können mithilfe der AWS Management Console oder des AWS SDK durchgeführt werden. Weitere Informationen erhalten Sie im Handbuch "Erste Schritte" zum Thema serverseitige Verschlüsselung mit Kinesis Streams.

F: Welche Verschlüsselungs-Algorithmen werden für die serverseitige Verschlüsselung verwendet?

Kinesis Streams verwendet einen AES-GCM-256-Algorithmus zur Verschlüsselung.

F: Wenn ich einen Stream verschlüssle, auf dem bereits Daten geschrieben sind, entweder als Klartext oder als Chiffretext, werden dann alle Daten im Stream ver- oder entschlüsselt, wenn ich die Verschlüsselung aktualisiere?

Nein, nur neue Daten, die auf den Stream geschrieben werden, werden durch die neue Anwendung der Verschlüsselung verschlüsselt (oder bleiben unverschlüsselt).

F: Was wird mithilfe der serverseitigen Verschlüsselung für Kinesis Streams verschlüsselt?

Die serverseitige Verschlüsselung verschlüsselt die Nutzlast der Nachricht sowie den Partitionsschlüssel, der durch die Produzentenanwendungen des Stream festgelegt wird.

F: Ist die serverseitige Verschlüsselung eine für Shard spezifische Funktion oder eine für Streams spezifische Funktion?

Die serverseitige Verschlüsselung ist eine für Streams spezifische Funktion.

F: Kann ich den CMK ändern, der für die Verschlüsselung eines bestimmten Streams verwendet wird?

Ja, Sie können mithilfe der AWS Management Console oder des AWS SDK einen neuen Masterschlüssel aussuchen, der auf einen bestimmten Stream angewendet werden soll.

F: Können Sie mir Schritt für Schritt den Lebenszyklus der Verschlüsselung meiner Daten ab dem Zeitpunkt erklären, ab dem ich sie an einen Kinesis-Stream mit aktivierter serverseitiger Verschlüsselung sende und ab dem Zeitpunkt, ab dem ich sie abrufe?

Im Folgenden wird Schritt für Schritt erklärt, wie Kinesis Streams die AWS KMS CMKs nutzt, um eine Nachricht zu verschlüsseln, bevor sie im PUT-Pfad gespeichert wird, und um sie zu entschlüsseln, nachdem sie im GET-Pfad abgerufen wird. Kinesis und AWS KMS führen die folgenden Aktionen durch (inklusive Entschlüsselung), wenn Sie putRecord(s) oder getRecords auf einem Stream mit aktivierter serverseitiger Verschlüsselung aufrufen.

  1. Die Daten werden von der Kinesis-Produzenten-Anwendung eines Kunden (Client) mithilfe von SSL über HTTPS an Kinesis geschickt.
  2. Die Daten werden von Kinesis empfangen, im RAM gespeichert und die Verschlüsselung wird auf die Nutzlast und Partitionsschlüssel eines Records angewendet.
  3. Kinesis fordert einfaches Input Keying Material (IKM) als Klartext an und eine Kopie des IKM wird mithilfe des vom Kunden ausgewählten KMS-Masterschlüssel verschlüsselt.
  4. AWS KMS erstellt IKM, verschlüsselt es mithilfe des Masterschlüssels und sendet sowohl das Klartext-IKM als auch das verschlüsselte IKM an Kinesis.
  5. Kinesis nutzt Klartext-IKM, um Datenschlüssel abzuleiten, die je Datensatz einzigartig sind.
  6. Kinesis verschlüsselt die Nutzlast und den Partitionsschlüssel mithilfe der Datenschlüssel und entfernt den Klartext-Schlüssel vom Speicher.
  7. Kinesis fügt das verschlüsselte IKM den verschlüsselten Daten hinzu.
  8. Das Klartext-IKM wird für eine erneute Verwendung im Zwischenspeicher abgelegt, bis es nach 5 Minuten abläuft.
  9. Kinesis liefert die verschlüsselte Nachricht an einen Backend-Speicher, wo sie gespeichert wird und durch einen getRecords-Aufruf abrufbar sind.

Kinesis und AWS KMS führen die folgenden Aktionen durch (inklusive Entschlüsselung), wenn Sie getRecords aufrufen.

  1. Wenn ein getRecords-Aufruf erfolgt, ruft das Frontend von Kinesis den verschlüsselten Datensatz vom Backend-Service ab.
  2. Kinesis stellt mithilfe eines durch die Kundenanfrage erzeugten Token eine Anforderung an KMS. AWS KMS autorisiert es.
  3. Kinesis entschlüsselt das mit dem Datensatz gespeicherte, verschlüsselte IKM.
  4. Kinesis erstellt die Datenschlüssel vom entschlüsselten IKM je Datensatz neu.
  5. Wenn autorisiert, entschlüsselt Kinesis die Nutzlast und entfernt den Klartext-Datenschlüssel vom Speicher.
  6. Kinesis liefert die Nutzlast über SSL und HTTPS an den Kinesis-Kunden (Client), der die Datensätze anfragt.

 


F: Ist Amazon Kinesis Streams über das kostenlose Nutzungskontingent für AWS verfügbar?

Nein. Amazon Kinesis Streams fallen derzeit nicht unter das kostenlose Nutzungskontingent für AWS. Das kostenlose Kontingent für AWS ist ein Programm, das einen kostenlosen Test bestimmter AWS-Services bietet. Weitere Informationen über das kostenlose Kontingent für AWS finden Sie unter Kostenloses Kontingent für AWS.

F: Wie viel kostet Amazon Kinesis Streams?

Amazon Kinesis Streams verwenden nutzungsabhängige Preise. Es gibt weder Vorlaufkosten noch Mindestgebühren. Sie zahlen nur für die Ressourcen, die Sie tatsächlich nutzen. Die Kosten für Amazon Kinesis Streams haben zwei Kerndimensionen und eine optionale Dimension:

  • Shard-Kosten pro Stunde, die sich nach der Anzahl der Shards in Ihrem Amazon Kinesis-Stream richten.
  • Die Kosten der PUT-Nutzlasteinheit, die sich nach der Anzahl der Datensätze mit einer Größe von 25 KB richten, die Ihre Datenproduzenten Ihrem Stream hinzufügen.
  • Die Kosten für optionale Extended Data Retention sind von der Anzahl der Shard-Stunden abhängig, die für Ihren Stream angefallen sind. 

Weitere Informationen zu den Kosten von Amazon Kinesis Streams finden Sie unter Amazon Kinesis Streams – Preise.

F: Ändern sich meine Kosten pro PUT-Nutzlasteinheit, wenn ich den PutRecords-Vorgang anstelle des PutRecord-Vorgangs verwende?

Die Gebühr für die PUT-Nutzlasteinheit wird nach der Anzahl der Nutzlasteinheiten mit einer Größe von 25 KB berechnet, die Ihrem Stream hinzugefügt werden. Die Kosten für die PUT-Nutzlasteinheit sind unabhängig vom Vorgang (PutRecords oder PutRecord) einheitlich.

F: Werden mir Shards mit dem Status „CLOSED“ in Rechnung gestellt?

Ein Shard könnte nach einem Resharding den Status „CLOSED“ haben. Shards mit dem Status „CLOSED“ werden Ihnen nicht in Rechnung gestellt.

F: Gibt es neben den Kosten für Amazon Kinesis Streams weitere Kosten, die durch die Nutzung von Amazon Kinesis Streams entstehen?

Wenn Sie Amazon EC2 zum Ausführen Ihrer Amazon Kinesis-Anwendungen verwenden, werden Ihnen die Amazon EC2-Ressourcen zusätzlich zu den Kosten für Amazon Kinesis Streams in Rechnung gestellt.

Die Amazon Kinesis Client Library (KCL) verwendet eine Amazon DynamoDB-Tabelle, um die Statusinformationen der Datensatzverarbeitung nachzuverfolgen. Wenn Sie die KCL für Ihre Amazon Kinesis-Anwendungen verwenden, werden Ihnen die Amazon DynamoDB-Ressourcen zusätzlich zu den Kosten für Amazon Kinesis Streams in Rechnung gestellt.

Wenn Sie erweiterte Shard-Ebenen-Metriken aktivieren, werden Ihnen Amazon CloudWatch-Kosten für die aktivierten Shard-Ebenen-Metriken zusätzlich zu Amazon Kinesis Streams-Kosten in Rechnung gestellt.

Bitte beachten Sie, dass es sich bei den oben beschriebenen drei Anwendungsfällen um häufig auftretende, jedoch nicht alles abdeckende Fälle handelt.