View a markdown version of this page

Problembehandlung bei der Datenübermittlung - Amazon Kinesis Data Streams

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.

Problembehandlung bei der Datenübermittlung

Verwenden Sie diesen Abschnitt, um häufig auftretende Probleme bei der Datenübermittlung zu lösen.

Die Lieferung blieb im Status CREATING hängen

Wenn Sie eine Lieferung erstellen, wechselt sie in den Status CREATING, während Ressourcen bereitgestellt werden. Die Bereitstellung ist in der Regel innerhalb weniger Minuten abgeschlossen. Wenn die Bereitstellung für einen längeren Zeitraum in CREATING verbleibt oder zu FAILED wechselt, ist wahrscheinlich ein Konfigurationsfehler die Ursache.

Rufen Sie anDescribeChannel, um den aktuellen Status und den Grund für den Status zu überprüfen. Zu den häufigsten Ursachen gehören:

  • Ungültiger IAM-Rollen-ARN oder unzureichende Berechtigungen in der Rollenrichtlinie.

  • Der Amazon S3-Ziel-Bucket ist nicht vorhanden oder befindet sich in einer anderen Region.

  • Der Schema-ARN in der AWS Glue Schemaregistrierung kann nicht aufgelöst werden.

Lieferung im Status FEHLGESCHLAGEN

Sie können eine Lieferung nicht zurückholen, deren ChannelStatus FAILED (wie zurückgesendet vonDescribeChannel) Lesen Sie das ChannelStatusReason Feld vonDescribeChannel, um die Ursache zu ermitteln. Beheben Sie das zugrunde liegende Problem, löschen Sie die fehlgeschlagene Lieferung und erstellen Sie sie mit der korrigierten Konfiguration erneut.

Hohe Datenaktualität

Die DataFreshness Metrik misst das Alter des ältesten noch nicht zugestellten Datensatzes. Hohe Werte deuten darauf hin, dass die Entbindung hinter der Aufnahme zurückbleibt. Häufige Ursachen:

  • Eine hohe Partitionsanzahl in der Zieltabelle erhöht den Metadaten-Overhead.

  • Das Wachstum der Tabellenmetadaten aufgrund vieler kleiner Commits reduziert den Commit-Durchsatz.

  • Ein niedriger Stream-Durchsatz in Kombination mit einer niedrigen Aktualisierungseinstellung führt zu häufigen kleinen Lieferungen.

Lösung: Aktivieren Sie für Streaming-Tabellen auf Apache Iceberg die Wartung von Amazon S3-Tabellen (Komprimierung und Ablauf der Snapshots), um das Wachstum der Metadaten zu bewältigen. Erhöhen Sie bei Streams mit geringem Durchsatz den DataFreshnessInSeconds Wert, damit für jeden Lieferzyklus mehr Daten stapelweise verarbeitet werden können.

Die strengste Einstellung zur Datenaktualität erfordert einen gleichbleibenden Mindestdurchsatz am Datenstrom, damit sich in jedem Zyklus genügend Daten für eine effiziente Bereitstellung und Inline-Komprimierung ansammeln. Wenn Ihr Stream weniger als diesen Durchsatz erzeugt, verwenden Sie einen höheren Wert. DataFreshnessInSeconds

Fehlgeschlagene Datensätze sind größer als Null

Wenn die Metrik für fehlgeschlagene Datensätze ungleich Null ist (DeliveryToS3.FailedRecordCountfür Amazon S3-Lieferungen oder DeliveryToIceberg.FailedRowCount für Streaming-Tabellenlieferungen), werden Datensätze an die Warteschlange für unzustellbare Nachrichten und nicht an das Ziel gesendet.

Für Streaming-Tabellen auf Apache Iceberg:

  • Schemakonflikt — der Datensatz entspricht nicht dem registrierten Schema.

  • Fehlendes erforderliches Feld — eine Spalte, für die keine NULL-Werte zulässig sind, hat keinen Wert im Datensatz.

  • Der AWS Glue Schema Registry-Serializer für das GSR_JSON-Format wird nicht verwendet — Hersteller müssen die Schema Registry Producer-Bibliothek verwenden. AWS Glue

Für Amazon S3-Buckets für allgemeine Zwecke:

  • Formatkonflikt — Das Datensatzformat entspricht nicht dem konfigurierten Eingabeformat.

Lösung: Überprüfen Sie die Einträge in der Warteschlange mit unleserlichen Buchstaben auf detaillierte Fehlerinformationen. Sehen Sie in den CloudWatch Protokollen der Lieferung nach, ob bestimmte Analyse- oder Validierungsfehler vorliegen. Korrigieren Sie den Hersteller so, dass er konforme Datensätze sendet.

Am Ziel werden keine Daten angezeigt

Wenn sich die Lieferung im Status AKTIV befindet, aber am Zielort keine Daten erscheinen, sind die häufigsten Ursachen:

  • Berechtigungsprobleme — die IAM-Rolle kann nicht in das Ziel schreiben. Überprüfen Sie die CloudWatch Protokolle auf AccessDenied Fehler.

  • Nicht übereinstimmende Ausgabeschlüsselpräfixe (Amazon S3-Buckets für allgemeine Zwecke) — wenn Ihre s3:PutObject Genehmigung auf ein Präfix wie beschränkt istarn:aws:s3:::my-bucket/data*, müssen die von Ihrer Ausgabeschlüsselvorlage generierten Schlüssel mit beginnen. data/ Eine Nichtübereinstimmung führt dazu, dass jeder Schreibvorgang verweigert wird.

  • Fehlende Tabellenberechtigung (Streaming-Tabellen) — Wenn Sie die Zieltabelle mit einem vom Kunden verwalteten AWS KMS Schlüssel verschlüsseln, stellen Sie sicher, dass die Rolle zur Serviceausführung s3tables:PutTableEncryption zusätzlich zu den anderen s3tables Aktionen Folgendes umfasst. Ohne sie ist sie CreateTable erfolgreich, aber die Tabellenverschlüsselung schlägt fehl, die Tabelle wird nie erstellt und es werden keine Daten übermittelt.

  • Fehlende Logging-Berechtigungen — wenn die Rolle zur Serviceausführung fehlt logs:CreateLogStream und logs:PutLogEvents Übermittlungsfehler nicht in den CloudWatch Protokollen aufgezeichnet werden, was dazu führen kann, dass ein Berechtigungsproblem als unbeaufsichtigter Fehler erscheint. Überprüfen Sie zuerst die Protokollierungsberechtigungen, wenn keine Protokolle vorhanden sind.

  • Keine neuen Daten nach der Erstellung — bei der Lieferung werden die vorhandenen Daten aus dem Stream nicht aufgefüllt. Nur Datensätze, die geschrieben wurden, nachdem die Lieferung AKTIV wird, werden zugestellt.

Die Lieferung wurde ausgesetzt

Eine Lieferung wird ausgesetzt, wenn das Ziel nicht mehr verfügbar oder nicht kompatibel ist. Häufige Ursachen:

  • Die Streaming-Tabellen in der Apache Iceberg-Zieltabelle wurden gelöscht.

  • Der Besitzer des Amazon S3-Buckets entspricht nicht dem erwarteten Konto (Inhaberschaft stimmt nicht überein).

  • In der Zieltabelle wurde eine inkompatible Partitionsspalte erkannt.

Eine ausgesetzte Lieferung kann nicht wieder aufgenommen werden. Sie müssen eine neue Lieferung mit einer gültigen Zielkonfiguration erstellen.

Fehler in den CloudWatch Protokollen verweigert

AccessDeniedFehler in den CloudWatch Protokollen der Lieferung deuten auf ein Berechtigungsproblem hin. Häufige Ursachen:

  • Die IAM-Rollenrichtlinie wurde nach der Erstellung der Lieferung geändert.

  • Die Amazon S3-Bucket-Richtlinie wurde geändert, um den Zugriff von der Rolle aus zu verweigern.

  • Die Vertrauensrichtlinie für die Rolle erlaubt nicht, dass der Kinesis Data Streams-Dienst sie übernimmt.

  • Die AWS KMS Schlüsselrichtlinie verweigert den Ver- oder Entschlüsselungszugriff auf die Rolle der Bereitstellung.

Überprüfen und korrigieren Sie die entsprechende Richtlinie und stellen Sie dann sicher, dass die Übertragung wieder aufgenommen wird.

Für meinen Stream ist keine Lieferung verfügbar

Für Streaming-Tabellen und die Amazon S3-Bereitstellung muss sich der Kinesis Data Streams-Stream im Kapazitätsmodus On-Demand Standard oder On-Demand Advantage befinden. Wenn Ihr Stream den Bereitstellungsmodus verwendet, müssen Sie ihn in den On-Demand Modus wechseln, bevor Sie eine Lieferung erstellen können.

Die Bereitstellung wird nach einer Schemaänderung gestoppt

Lieferungen unterstützen die Schemaentwicklung nicht. Wenn Sie das Schema in der AWS Glue Schemaregistrierung aktualisieren, nachdem Sie eine Lieferung erstellt haben, schlägt die Überprüfung von Datensätzen, die mit der neuen Schemaversion erstellt wurden, möglicherweise fehl und werden in die Warteschlange mit unzustellbaren Briefen weitergeleitet.

Um das Problem zu lösen: Machen Sie die Schemaänderung beim Producer rückgängig oder löschen Sie die vorhandene Lieferung und erstellen Sie sie mit dem aktualisierten Schema neu.

Ein Stream kann nicht gelöscht werden

Eine DeleteStream Anfrage schlägt fehlResourceInUseException, wenn der Stream eine oder mehrere aktive Lieferungen hat. Ein Stream kann nicht gelöscht werden, solange Lieferungen an ihn angehängt sind.

Um das Problem zu lösen: Listen Sie die Sendungen im Stream mit auf ListChannels (mithilfe eines Stream-Filters), löschen Sie jede Lieferung mit DeleteChannel und löschen Sie dann den Stream.