Problembehebung bei Amazon QLDB - Amazon Quantum Ledger-Datenbank (AmazonQLDB)

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.

Problembehebung bei Amazon QLDB

Wichtig

Hinweis zum Ende des Supports: Bestandskunden können Amazon QLDB bis zum Ende des Supports am 31.07.2025 nutzen. Weitere Informationen finden Sie unter Migrieren eines Amazon QLDB Ledgers zu Amazon Aurora SQL Postgre.

In den folgenden Abschnitten finden Sie eine zusammengefasste Liste der häufigsten Fehler, die bei der Nutzung von Amazon auftreten könnenQLDB, sowie Anleitungen zu deren Behebung.

Anleitungen zur Fehlerbehebung speziell für IAM Access finden Sie unterFehlerbehebung Amazon QLDB Amazon-Identität und -Zugriff.

Bewährte Methoden zur Optimierung Ihrer PartiQL-Anweisungen finden Sie unterOptimierung der Abfrageleistung.

Transaktionen mit dem QLDB Treiber ausführen

In diesem Abschnitt werden allgemeine Ausnahmen aufgeführt, die der QLDB Amazon-Treiber zurückgeben kann, wenn Sie ihn verwenden, um PartiQL-Transaktionen in einem Ledger auszuführen. Weitere Informationen über dieses Feature finden Sie unter Erste Schritte mit dem Treiber. Bewährte Methoden für die Konfiguration und Verwendung des Treibers finden Sie unter. Treiberempfehlungen

Jede Ausnahme enthält die spezifische Fehlermeldung, gefolgt von einer kurzen Beschreibung und Vorschlägen für mögliche Lösungen.

CapacityExceededException

Meldung: Kapazität überschritten

Amazon QLDB lehnte die Anfrage ab, weil sie die Verarbeitungskapazität des Ledgers überschritten hatte. QLDBerzwingt ein internes Skalierungslimit pro Ledger, um den Zustand und die Leistung des Service aufrechtzuerhalten. Dieses Limit hängt von der Workload-Größe jeder einzelnen Anfrage ab. Eine Anforderung kann beispielsweise eine erhöhte Arbeitslast nach sich ziehen, wenn sie ineffiziente Datentransaktionen durchführt, z. B. Tabellenscans, die aus einer nicht indexqualifizierten Abfrage resultieren.

Wir empfehlen, dass Sie warten, bevor Sie die Anfrage erneut versuchen. Wenn Ihre Anwendung immer wieder auf diese Ausnahme stößt, optimieren Sie Ihre Kontoauszüge und reduzieren Sie die Anzahl und das Volumen der Anfragen, die Sie an das Hauptbuch senden. Beispiele für die Optimierung von Kontoauszügen sind die Ausführung von weniger Kontoauszügen pro Transaktion und die Optimierung Ihrer Tabellenindizes. Informationen darüber, wie Sie Anweisungen optimieren und Tabellenscans vermeiden können, finden Sie unterOptimierung der Abfrageleistung.

Wir empfehlen außerdem, die neueste Version des QLDB Treibers zu verwenden. Der Treiber verfügt über eine standardmäßige Wiederholungsrichtlinie, die Exponential Backoff und Jitter verwendet, um bei solchen Ausnahmen automatisch erneut zu versuchen. Das Konzept des exponentiellen Backoffs besteht darin, bei aufeinanderfolgenden Fehlerantworten immer längere Wartezeiten zwischen Wiederholungsversuchen zu verwenden.

InvalidSessionException

Nachricht: Transaktion transactionId ist abgelaufen

Eine Transaktion hat ihre maximale Lebensdauer überschritten. Eine Transaktion kann bis zu 30 Sekunden lang ausgeführt werden, bevor sie bestätigt wird. Nach Ablauf dieses Zeitlimits werden alle an der Transaktion ausgeführten Arbeiten zurückgewiesen und die Sitzung wird QLDB verworfen. Dieses Limit schützt den Client davor, Sessions unzugänglich zu machen, indem Transaktionen gestartet werden, ohne sie festzuschreiben oder zu stornieren.

Wenn dies eine häufige Ausnahme in Ihrer Anwendung ist, ist es wahrscheinlich, dass die Ausführung von Transaktionen einfach zu lange dauert. Wenn die Transaktionslaufzeit länger als 30 Sekunden dauert, optimieren Sie Ihre Kontoauszüge, um die Transaktionen zu beschleunigen. Beispiele für die Optimierung von Anweisungen sind die Ausführung von weniger Anweisungen pro Transaktion und die Optimierung Ihrer Tabellenindizes. Weitere Informationen finden Sie unter Optimierung der Abfrageleistung.

InvalidSessionException

Nachricht: Sitzung sessionId ist abgelaufen

QLDBhat die Sitzung verworfen, weil sie ihre maximale Gesamtlebensdauer überschritten hat. QLDBverwirft Sitzungen unabhängig von einer aktiven Transaktion nach 13—17 Minuten. Sitzungen können aus einer Reihe von Gründen verloren gehen oder beeinträchtigt werden, wie z. B. Hardwarefehler, Netzwerkfehler oder Anwendungsneustarts. QLDBErzwingt also eine maximale Lebensdauer für Sitzungen, um sicherzustellen, dass die Clientsoftware auch Sitzungsausfällen standhält.

Wenn diese Ausnahme auftritt, empfehlen wir, eine neue Sitzung abzurufen und die Transaktion erneut zu versuchen. Wir empfehlen außerdem, die neueste Version des QLDB Treibers zu verwenden, der den Sitzungspool und dessen Integrität im Namen der Anwendung verwaltet.

InvalidSessionException

Meldung: No such session (Keine solche Sitzung)

Der Client hat versucht, eine Transaktion QLDB über eine Sitzung durchzuführen, die nicht existiert. Unter der Annahme, dass der Client eine Sitzung verwendet, die zuvor existiert hat, ist die Sitzung möglicherweise aus einem der folgenden Gründe nicht mehr vorhanden:

  • Wenn eine Sitzung an einem internen Serverausfall beteiligt ist (d. h. ein Fehler mit dem HTTP Antwortcode 500), entscheiden Sie sich QLDB möglicherweise dafür, die Sitzung vollständig zu verwerfen, anstatt es dem Kunden zu ermöglichen, Transaktionen mit einer Sitzung mit unsicherem Status durchzuführen. Dann schlagen alle Wiederholungsversuche in dieser Sitzung mit diesem Fehler fehl.

  • Abgelaufene Sitzungen werden irgendwann von vergessen. QLDB Dann führen alle Versuche, die Sitzung weiter zu verwenden, zu diesem Fehler anstatt des ursprünglichen InvalidSessionException.

Wenn diese Ausnahme auftritt, empfehlen wir, eine neue Sitzung abzurufen und die Transaktion erneut zu versuchen. Wir empfehlen außerdem, die neueste Version des QLDB Treibers zu verwenden, der den Sitzungspool und dessen Integrität im Namen der Anwendung verwaltet.

RateExceededException

Meldung: The rate was exceeded (Die Rate wurde überschritten)

QLDBhat einen Client anhand der Identität des Anrufers gedrosselt. QLDBerzwingt mithilfe eines Token-Bucket-Drosselungsalgorithmus eine Drosselung pro Region und pro Konto. QLDBtut dies, um die Leistung des Dienstes zu verbessern und eine faire Nutzung für alle Kunden sicherzustellen. QLDB Beispielsweise kann der Versuch, eine große Anzahl gleichzeitiger Sitzungen mit dem StartSessionRequest-Vorgang abzurufen, zu einer Drosselung führen.

Um den korrekten Anwendungszustand aufrechtzuerhalten und eine weitere Drosselung zu verringern, können Sie diese Ausnahme mit exponentiellem Backoff und Jitter wiederholen. Das Konzept des exponentiellen Backoffs besteht darin, bei aufeinanderfolgenden Fehlerantworten immer längere Wartezeiten zwischen Wiederholungsversuchen zu verwenden. Wir empfehlen, die neueste Version des Treibers zu verwenden. QLDB Der Treiber verfügt über eine standardmäßige Wiederholungsrichtlinie, die exponentielles Backoff und Jitter verwendet, um bei solchen Ausnahmen automatisch erneut zu versuchen.

Die neueste Version des QLDB Treibers kann auch hilfreich sein, wenn Ihre Anwendung ständig für Anrufe gedrosselt wird. QLDB StartSessionRequest Der Treiber verwaltet einen Pool von Sitzungen, die transaktionsübergreifend wiederverwendet werden, was dazu beitragen kann, die Anzahl der StartSessionRequest Aufrufe zu reduzieren, die Ihre Anwendung tätigt. Wenn Sie eine Erhöhung der API Drosselungslimits beantragen möchten, wenden Sie sich an das Center.AWS Support

LimitExceededException

Meldung: Exceeded the session limit (Sitzungslimit überschritten)

Ein Ledger hat sein Kontingent (auch als Limit bezeichnet) für die Anzahl aktiver Sitzungen überschritten. Dieses Kontingent ist in Kontingente und Limits bei Amazon QLDB definiert. Die Anzahl aktiver Sitzungen eines Ledgers ist schließlich konsistent, und Ledger, die konsistent in der Nähe des Kontingents ausgeführt werden, erfahren diese Ausnahme möglicherweise in regelmäßigen Abständen.

Um die Integrität Ihrer Anwendung aufrechtzuerhalten, empfehlen wir, bei dieser Ausnahme einen erneuten Versuch zu machen. Um diese Ausnahme zu vermeiden, stellen Sie sicher, dass Sie nicht mehr als 1.500 gleichzeitige Sitzungen für ein einzelnes Ledger über alle Clients hinweg konfiguriert haben. Sie können beispielsweise die maxConcurrentTransactionsMethode des QLDBAmazon-Treibers für Java verwenden, um die maximale Anzahl verfügbarer Sitzungen in einer Treiberinstanz zu konfigurieren.

QldbClientException

Meldung: A streamed result is only valid when the parent transaction is open (Ein gestreamtes Ergebnis ist nur gültig, wenn die übergeordnete Transaktion geöffnet ist)

Die Transaktion ist abgeschlossen und kann nicht zum Abrufen der Ergebnisse von verwendet werdenQLDB. Eine Transaktion wird geschlossen, wenn sie entweder festgeschrieben oder storniert wurde.

Diese Ausnahme tritt auf, wenn der Client direkt mit dem Transaction Objekt arbeitet und versucht, Ergebnisse abzurufen, QLDB nachdem er eine Transaktion festgeschrieben oder abgebrochen hat. Um dieses Problem zu beheben, muss der Client die Daten lesen, bevor er die Transaktion abschließt.

Journaldaten exportieren

In diesem Abschnitt werden häufig auftretende Ausnahmen aufgeführt, die QLDB auftreten können, wenn Sie Journaldaten aus einem Ledger in einen Amazon S3 S3-Bucket exportieren. Weitere Informationen über dieses Feature finden Sie unter Journaldaten aus Amazon exportieren QLDB.

Jede Ausnahme enthält die spezifische Fehlermeldung, gefolgt von einer kurzen Beschreibung und Vorschlägen für mögliche Lösungen.

AccessDeniedException

Nachricht: Benutzer: userARN ist nicht berechtigt,: iam: PassRole auf der Ressource: auszuführen roleARN

Sie sind nicht berechtigt, eine IAM Rolle an den QLDB Dienst zu übergeben. QLDBerfordert eine Rolle für alle Journalexportanfragen, und Sie müssen über die erforderlichen Berechtigungen verfügen, um diese Rolle weiterzugebenQLDB. Die Rolle bietet QLDB Schreibberechtigungen in Ihrem angegebenen Amazon S3 S3-Bucket.

Stellen Sie sicher, dass Sie eine IAM Richtlinie definieren, die die Erlaubnis erteilt, den PassRole API Vorgang auf Ihrer angegebenen IAM Rollenressource für den QLDB Service auszuführen (qldb.amazonaws.com). Eine Beispielrichtlinie finden Sie in Beispiele für identitätsbasierte Richtlinien für Amazon QLDB.

IllegalArgumentException

Meldung: QLDB Bei der Überprüfung der S3-Konfiguration ist ein Fehler aufgetreten: errorCode errorMessage

Eine mögliche Ursache für diesen Fehler ist, dass der bereitgestellte Amazon S3-Bucket in Amazon S3 nicht existiert. Oder QLDB hat nicht genügend Berechtigungen, um Objekte in den angegebenen Amazon S3 S3-Bucket zu schreiben.

Stellen Sie sicher, dass der S3-Bucket-Name, den Sie in Ihrer Anforderung für den Exportauftrag angeben, korrekt ist. Weitere Informationen zur Benennung von Buckets finden Sie unter Einschränkungen und Einschränkungen von Buckets im Amazon Simple Storage Service-Benutzerhandbuch.

Stellen Sie außerdem sicher, dass Sie für Ihren angegebenen Bucket eine Richtlinie definieren, die dem QLDB Service PutObjectAcl Berechtigungen PutObject und Berechtigungen gewährt (qldb.amazonaws.com). Weitere Informationen hierzu finden Sie unter Exportberechtigungen.

IllegalArgumentException

Meldung: Unexpected response from Amazon S3 while validating the S3 configuration. Antwort von S3: errorCode errorMessage

Der Versuch, Journal-Exportdaten in den bereitgestellten S3-Bucket zu schreiben, schlug mit der angegebenen Amazon S3 S3-Fehlerantwort fehl. Weitere Informationen zu möglichen Ursachen finden Sie unter Problembehandlung bei Amazon S3 im Amazon Simple Storage Service-Benutzerhandbuch.

IllegalArgumentException

Meldung: Amazon S3 bucket prefix must not exceed 128 characters

Das in der Journal-Journalexportanfrage angegebene Präfix enthält mehr als 128 Zeichen.

IllegalArgumentException

Meldung: Start date must not be greater than end date

InclusiveStartTimeSowohl als auch ExclusiveEndTime müssen das Datums- und Uhrzeitformat ISO8601 und die koordinierte Weltzeit (UTC) angegeben werden.

IllegalArgumentException

Meldung: End date cannot be in the future

Beides InclusiveStartTime und ExclusiveEndTime muss im ISO 8601 Datums- und Uhrzeitformat und inUTC.

IllegalArgumentException

Meldung: Die angegebene Objektverschlüsselungseinstellung (S3EncryptionConfiguration) ist nicht mit einem AWS Key Management Service (AWS KMS) -Schlüssel kompatibel

Sie haben einen KMSKeyArn mit einem ObjectEncryptionType vom entweder NO_ENCRYPTION oder SSE_S3 angegeben. Sie können einem Kunden, der AWS KMS key für ihn verwaltet wird, nur den Verschlüsselungstyp „Objekt“ angebenSSE_KMS. Weitere Informationen zu serverseitigen Verschlüsselungsoptionen in Amazon S3 finden Sie unter Schützen von Daten mithilfe serverseitiger Verschlüsselung im Amazon S3 Developer Guide.

LimitExceededException

Meldung: Exceeded the limit of 2 concurrently running Journal export jobs

QLDBerzwingt ein Standardlimit von zwei gleichzeitigen Journal-Exportaufträgen.

Journaldaten streamen

In diesem Abschnitt werden häufig auftretende Ausnahmen aufgeführt, die auftreten QLDB können, wenn Sie Journaldaten aus einem Ledger in Amazon Kinesis Data Streams streamen. Weitere Informationen über dieses Feature finden Sie unter Journaldaten von Amazon streamen QLDB.

Jede Ausnahme enthält die spezifische Fehlermeldung, gefolgt von einer kurzen Beschreibung und Vorschlägen für mögliche Lösungen.

AccessDeniedException

Nachricht: Benutzer: userARN ist nicht berechtigt,: iam: PassRole auf der Ressource: auszuführen roleARN

Sie sind nicht berechtigt, eine IAM Rolle an den QLDB Dienst zu übergeben. QLDBerfordert eine Rolle für alle Journal-Stream-Anfragen, und Sie müssen über die erforderlichen Berechtigungen verfügen, um diese Rolle weiterzugebenQLDB. Die Rolle QLDB bietet Schreibberechtigungen für Ihre angegebene Amazon Kinesis Data Streams Streams-Ressource.

Stellen Sie sicher, dass Sie eine IAM Richtlinie definieren, die die Erlaubnis erteilt, den PassRole API Vorgang auf Ihrer angegebenen IAM Rollenressource für den QLDB Service auszuführen (qldb.amazonaws.com). Eine Beispielrichtlinie finden Sie in Beispiele für identitätsbasierte Richtlinien für Amazon QLDB.

IllegalArgumentException

Meldung: QLDB Bei der Validierung von Kinesis Data Streams ist ein Fehler aufgetreten: Antwort von Kinesis: errorCode errorMessage

Eine mögliche Ursache für diesen Fehler ist, dass die bereitgestellte Kinesis Data Streams Streams-Ressource nicht existiert. Oder QLDB hat nicht genügend Berechtigungen, um Datensätze in den angegebenen Kinesis-Datenstrom zu schreiben.

Stellen Sie sicher, dass der Kinesis-Datenstream, den Sie in Ihrer Stream-Anfrage angeben, korrekt ist. Weitere Informationen finden Sie unter Erstellen und Aktualisieren von Datenströmen im Amazon Kinesis Data Streams Developer Guide.

Stellen Sie außerdem sicher, dass Sie eine Richtlinie für Ihren angegebenen Kinesis-Datenstrom definieren, die dem QLDB Dienst (qldb.amazonaws.com) Berechtigungen für die folgenden Aktionen gewährt. Weitere Informationen finden Sie unter Stream-Berechtigungen.

  • kinesis:PutRecord

  • kinesis:PutRecords

  • kinesis:DescribeStream

  • kinesis:ListShards

IllegalArgumentException

Meldung: Unerwartete Antwort von Kinesis Data Streams beim Überprüfen der Kinesis-Konfiguration. Antwort von Kinesis: errorCode errorMessage

Der Versuch, Datensätze in den bereitgestellten Kinesis-Datenstrom zu schreiben, schlug mit der angegebenen Kinesis-Fehlerantwort fehl. Weitere Informationen zu möglichen Ursachen finden Sie unter Problembehandlung bei Amazon Kinesis Data Streams-Produzenten im Amazon Kinesis Data Streams Developer Guide.

IllegalArgumentException

Meldung: Start date must not be greater than end date.

InclusiveStartTimeSowohl als auch ExclusiveEndTime müssen das Datums- und Uhrzeitformat ISO8601 und die koordinierte Weltzeit () angegeben werden. UTC

IllegalArgumentException

Meldung: Startdatum kann nicht in der Zukunft liegen.

Beides InclusiveStartTime und ExclusiveEndTime muss im ISO 8601 Datums- und Uhrzeitformat und inUTC.

LimitExceededException

Meldung: Grenzwert von 5 parallel ausgeführten Journal-Streams zu Kinesis Data Streams überschritten

QLDBerzwingt ein Standardlimit von fünf gleichzeitigen Journal-Streams.

Journaldaten werden überprüft

In diesem Abschnitt werden häufig auftretende Ausnahmen aufgeführt, die QLDB auftreten können, wenn Sie Journaldaten in einem Ledger verifizieren. Weitere Informationen über dieses Feature finden Sie unter Datenüberprüfung bei Amazon QLDB.

Jede Ausnahme umfasst die spezifische Fehlermeldung, gefolgt von den API Vorgängen, durch die sie ausgelöst werden kann, eine kurze Beschreibung und Vorschläge für mögliche Lösungen.

IllegalArgumentException

Nachricht: Der angegebene Ion-Wert ist ungültig und kann nicht analysiert werden.

APIOperationen: GetDigest, GetBlock, GetRevision

Stellen Sie sicher, dass Sie einen gültigen Amazon Ion-Wert bereitstellen, bevor Sie Ihre Anfrage erneut stellen.

IllegalArgumentException

Meldung: Die angegebene Blockadresse ist ungültig.

APIOperationen: GetDigest, GetBlock, GetRevision

Stellen Sie sicher, dass Sie eine gültige Block-Adresse bereitstellen, bevor Sie Ihre Anfrage erneut stellen. Ein Block-Adresse ist eine Amazon Ion-Struktur, die über zwei Felder verfügt: strandId und sequenceNo.

Beispiel: {strandId:"BlFTjlSXze9BIh1KOszcE3",sequenceNo:14}

IllegalArgumentException

Nachricht: Die Sequenznummer der angegebenen Digest-Tip-Adresse liegt außerhalb des letzten eingegebenen Datensatzes des Strangs.

APIOperationen: GetDigest, GetBlock, GetRevision

Die Digest-Tip-Adresse, die Sie angeben, muss über eine Sequenznummer verfügen, die kleiner oder gleich der Sequenznummer des zuletzt übertragenen Datensatzes der Journal-Strähne ist. Bevor Sie Ihre Anforderung wiederholen, stellen Sie sicher, dass Sie eine Digest-Tip-Adresse mit einer gültigen Sequenznummer bereitstellen.

IllegalArgumentException

Meldung: The Strand ID of the provided block address is not valid.

APIOperationen: GetDigest, GetBlock, GetRevision

Die von Ihnen angegebene Block-Adresse muss eine Strähnen-ID aufweisen, die der Strähnen-ID des Journals entspricht. Bevor Sie Ihre Anforderung wiederholen, stellen Sie sicher, dass Sie eine Block-Adresse mit einer gültigen Strähnen-ID bereitstellen.

IllegalArgumentException

Nachricht: Die Sequenznummer der angegebenen Blockadresse liegt außerhalb des letzten eingegebenen Datensatzes des Strangs.

APIOperationen: GetBlock, GetRevision

Die Block-Adresse, die Sie angeben, muss über eine Sequenznummer verfügen, die kleiner oder gleich der Sequenznummer des zuletzt übertragenen Datensatzes der Strähne ist. Bevor Sie Ihre Anforderung wiederholen, stellen Sie sicher, dass Sie eine Block-Adresse mit einer gültigen Sequenznummer.

IllegalArgumentException

Nachricht: Die Strähnen-ID der bereitgestellten Block-Adresse muss der Strähnen-ID der bereitgestellten Digest-Tip-Adresse entsprechen.

APIOperationen: GetBlock, GetRevision

Sie können ein Dokument nur überprüfen oder blockieren, wenn es in derselben Journal-Strähne vorhanden ist wie das von Ihnen angegebene Digest-Journal.

IllegalArgumentException

Nachricht: Die Sequenznummer der bereitgestellten Block-Adresse darf nicht größer sein als die Sequenznummer der bereitgestellten Digest-Tip-Adresse.

APIOperationen: GetBlock, GetRevision

Sie können eine Dokumentrevision nur überprüfen oder blockieren, wenn sie von dem von Ihnen bereitgestellten Digest abgedeckt wird. Dies bedeutet, dass sie vor der Digest-Tip-Adresse an das Journal übertragen wurde.

IllegalArgumentException

Nachricht: Die angegebene Dokument-ID wurde im Block an der angegebenen Block-Adresse nicht gefunden.

APIBetrieb: GetRevision

Die Dokument-ID, die Sie angeben, muss in der von Ihnen angegebenen Block-Adresse vorhanden sein. Bevor Sie Ihre Anforderung wiederholen, stellen Sie sicher, dass diese beiden Parameter konsistent sind.