Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Fehlerbehandlung mit DynamoDB

Fokusmodus
Fehlerbehandlung mit DynamoDB - Amazon-DynamoDB

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.

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.

Dieser Abschnitt beschreibt Laufzeitfehler und wie sie gehandhabt werden können. Es werden auch Fehlermeldungen und Codes beschrieben, die Amazon-DynamoDB-spezifisch sind. Eine Liste der häufigsten Fehler, die für alle AWS Dienste gelten, finden Sie unter Access Management

Fehlerkomponenten

Wenn das Programm eine Anforderung sendet, versucht DynamoDB diese zu verarbeiten. Bei einer erfolgreichen Anforderung gibt DynamoDB einen HTTP-Erfolgscode (200 OK) sowie die Ergebnisse der angeforderten Operation zurück.

Wenn die Anforderung nicht erfolgreich ist, gibt DynamoDB einen Fehler zurück. Jeder Fehler hat drei Komponenten:

  • Einen HTTP-Statuscode (z. B. 400).

  • Einen Ausnahmenamen (z. B. ResourceNotFoundException).

  • Eine Fehlermeldung (z. B. Requested resource not found: Table: tablename not found).

AWS SDKs Sie kümmern sich darum, dass Fehler an Ihre Anwendung weitergegeben werden, sodass Sie entsprechende Maßnahmen ergreifen können. Sie können beispielsweise in einem Java-Programm eine try-catch-Logik schreiben, um eine ResourceNotFoundException zu verarbeiten.

Wenn Sie kein AWS SDK verwenden, müssen Sie den Inhalt der Low-Level-Antwort von DynamoDB analysieren. Nachfolgend finden Sie ein Beispiel einer solchen Antwort.

HTTP/1.1 400 Bad Request x-amzn-RequestId: LDM6CJP8RMQ1FHKSC1RBVJFPNVV4KQNSO5AEMF66Q9ASUAAJG Content-Type: application/x-amz-json-1.0 Content-Length: 240 Date: Thu, 15 Mar 2012 23:56:23 GMT {"__type":"com.amazonaws.dynamodb.v20120810#ResourceNotFoundException", "message":"Requested resource not found: Table: tablename not found"}

Transaktionsfehler

Informationen zu Transaktionsfehlern finden Sie unter Handhabung von Transaktionskonflikten in DynamoDB

Fehlermeldungen und Codes

Die folgende Liste enthält von DynamoDB zurückgegebene Ausnahmen, gruppiert nach HTTP-Statuscode. Wenn OK, um es erneut zu versuchen? Ja ist, können Sie die gleiche Anforderung erneut senden. Wenn OK, um es erneut zu versuchen? auf Nein eingestellt ist, müssen Sie das Problem clientseitig lösen, bevor Sie eine neue Anforderung absenden.

HTTP-Statuscode 400

Der HTTP-Statuscode 400 weist auf ein Problem mit der Anforderung hin, wie z. B. einen Authentifizierungsfehler, fehlende Parameter oder die Überschreitung des bereitgestellten Durchsatzes der Tabelle. Sie müssen das Problem zuerst in der Anwendung beheben, bevor Sie die Anforderung erneut senden.

AccessDeniedException

Meldung: Access denied. (Zugriff verweigert.)

Der Client hat die Anforderung nicht richtig signiert. Wenn Sie ein AWS -SDK verwenden, werden die Anforderungen automatisch für Sie signiert. Rufen Sie andernfalls Signaturprozess mit Signature Version 4 in der Allgemeine AWS-Referenz auf.

Erneut versuchen? Nein

ConditionalCheckFailedException

Meldung: The conditional request failed. (Die bedingte Anforderung ist fehlgeschlagen.)

Sie haben eine Bedingung angegeben, die als False ausgewertet wurde. Beispiel: Sie haben versucht, eine bedingte Aktualisierung für ein Element durchzuführen, aber der tatsächliche Wert des Attributs stimmt nicht mit dem erwarteten Wert in der Bedingung überein.

Erneut versuchen? Nein

IncompleteSignatureException

Meldung: Die angeforderte Signatur entspricht nicht den AWS Standards.

Die Anforderungssignatur enthielt nicht alle erforderlichen Komponenten. Wenn Sie ein AWS SDK verwenden, werden Anfragen automatisch für Sie signiert. Andernfalls fahren Sie mit dem Signaturprozess für Signature Version 4 in der fort. Allgemeine AWS-Referenz

Erneut versuchen? Nein

ItemCollectionSizeLimitExceededException

Meldung: Collection size exceeded. (Sammlungsgröße überschritten.)

Für eine Tabelle mit einem lokalen sekundären Index hat eine Gruppe von Elementen mit demselben Partitionsschlüsselwert die maximale Größe von 10 GB überschritten. Weitere Informationen zu Elementsammlungen finden Sie unter Elementauflistungen in lokalen sekundären Indizes.

Erneut versuchen? Ja

LimitExceededException

Meldung: Too many operations for a given subscriber. (Zu viele Operationen für einen bestimmten Abonnenten.)

Es gibt zu viele gleichzeitige Operationen auf Steuerebene. Die kumulative Anzahl von Tabellen und Indizes im Status CREATING, DELETING oder UPDATING darf 500 nicht überschreiten.

Erneut versuchen? Ja

MissingAuthenticationTokenException

Meldung: Anforderung muss eine gültige (registrierte) AWS -Zugriffsschlüssel-ID enthalten.

Die Anforderung schloss die erforderliche Autorisierungskopfzeile nicht ein oder sie war falsch formatiert. Siehe DynamoDB Low-Level-API.

Erneut versuchen? Nein

ProvisionedThroughputExceededException

Meldung: Sie haben Ihren maximal erlaubten bereitgestellten Durchsatz für eine Tabelle oder für einen oder mehrere globale sekundäre Indexe überschritten. Um Leistungskennzahlen für den bereitgestellten Durchsatz im Vergleich zum verbrauchten Durchsatz anzuzeigen, öffnen Sie die CloudWatchAmazon-Konsole.

Beispiel: Die Anforderungsrate ist zu hoch. AWS SDKs Für DynamoDB werden Anfragen, die diese Ausnahme erhalten, automatisch wiederholt. Die Anforderung ist letztendlich erfolgreich, sofern die Warteschlange für Wiederholungsversuche für das Beenden nicht zu groß ist. Verringern Sie die Häufigkeit der Anforderungen mit Wiederholversuche bei Fehlern und exponentielles Backoff.

Erneut versuchen? Ja

RequestLimitExceeded

Meldung: Throughput exceeds the current throughput limit for your account. (Der Durchsatz überschreitet die aktuelle Durchsatzbegrenzung für Ihr Konto.) Um eine Erhöhung des Limits zu beantragen, wenden Sie sich an den AWS Support unter https://aws.amazon.com/support.

Beispiel: Die Rate der On-Demand-Anforderungen überschreitet den zulässigen Kontodurchsatz.

Erneut versuchen? Ja

ResourceInUseException

Meldung: The resource which you are attempting to change is in use. (Die Ressource, die Sie verändern möchten, wird gerade benutzt.)

Beispiel: Sie haben versucht, eine vorhandene Tabelle neu zu erstellen oder eine Tabelle zu löschen, die sich momentan im Status CREATING befindet.

Erneut versuchen? Nein

ResourceNotFoundException

Meldung: Requested resource not found. (Angefragte Ressource nicht gefunden.)

Beispiel: Die Tabelle, die angefordert wird, ist nicht vorhanden oder befindet sich zu früh im Status CREATING.

Erneut versuchen? Nein

ThrottlingException

Meldung: Rate of requests exceeds the allowed throughput. (Anforderungsrate überschreitet den erlaubten Durchsatz.)

Diese Ausnahme wird als AmazonServiceException Antwort mit dem Statuscode THROTTLING_EXCEPTION zurückgegeben. Diese Ausnahme wird möglicherweise zurückgegeben, wenn Sie API-Operationen der Steuerebene zu schnell ausführen.

Bei Tabellen, die den On-Demand-Modus verwenden, wird diese Ausnahme möglicherweise für alle API-Operationen der Datenebene zurückgegeben, wenn Ihre Anforderungsrate zu hoch ist. Weitere Informationen zur Skalierung auf Abruf finden Sie unter. Anfänglicher Durchsatz und Skalierungseigenschaften

Erneut versuchen? Ja

UnrecognizedClientException

Meldung: The Access Key ID or security token is invalid. (Die Zugriffsschlüssel-ID oder der Sicherheitstoken ist ungültig.)

Die Anforderungssignatur ist nicht korrekt. Die wahrscheinlichste Ursache ist eine ungültige AWS Zugriffsschlüssel-ID oder ein ungültiger geheimer Schlüssel.

Erneut versuchen? Ja

ValidationException

Meldung: Variiert je nach auftretendem spezifischen Fehler(n)

Dieser Fehler kann aus verschiedenen Gründen auftreten, z. B. wenn ein erforderlicher Parameter fehlt, ein Wert außerhalb des Bereichs liegt oder Datentypen nicht übereinstimmen. Die Fehlermeldung enthält Details zum spezifischen Teil der Anforderung, die den Fehler verursacht hat.

Erneut versuchen? Nein

HTTP-Statuscode 5xx

Der HTTP-Statuscode 5xx weist auf ein Problem hin, das von AWS behoben werden muss. Dies kann ein vorübergehender Fehler sein. In diesem Fall können Sie Ihre Anforderung wiederholen, bis sie korrekt ausgeführt wird. Andernfalls rufen Sie das AWS Service Health Dashboard auf, um zu sehen, ob es Betriebsprobleme mit dem Service gibt.

Weitere Informationen finden Sie unter Wie behebe ich HTTP-5xx-Fehler in Amazon DynamoDB?

InternalServerError (HTTP 500)

DynamoDB konnte die Anforderung nicht verarbeiten.

Erneut versuchen? Ja

Anmerkung

Während der Arbeit mit Elementen können interne Serverfehler auftreten. Diese sind während der Lebensdauer einer Tabelle zu erwarten. Alle fehlgeschlagenen Anforderungen können sofort abgerufen werden.

Wenn Sie bei einem Schreibvorgang einen Statuscode 500 erhalten, ist der Vorgang entweder erfolgreich oder ist fehlgeschlagen. Wenn der Schreibvorgang eine TransactWriteItem-Anforderung ist, dann ist es in Ordnung, den Vorgang erneut zu versuchen. Wenn es sich bei der Schreiboperation um eine Schreibanfrage mit einem Einzelelement handelt, wie z. B. PutItem, UpdateItem, oder DeleteItem, dann sollte Ihre Anwendung den Status des Elements lesen, bevor Sie den Vorgang erneut versuchen und/oder CLI, Beispiel für DynamoDB-Bedingungsausdrücke verwenden, um sicherzustellen, dass das Element nach einem erneuten Versuch in einem korrekten Zustand bleibt, unabhängig davon, ob der vorherige Vorgang erfolgreich oder fehlgeschlagen war. Wenn Idempotenz eine Voraussetzung für die Schreiboperation ist, verwenden Sie bitte TransactWriteItem, das idempotente Anfragen durch automatische Angabe eines ClientRequestToken unterstützt, um mehrere Versuche zu disambiguieren, dieselbe Aktion auszuführen.

ServiceUnavailable (HTTP 503)

DynamoDB ist derzeit nicht verfügbar. (Dies sollte ein vorübergehender Status sein.)

Erneut versuchen? Ja

Fehlerbehandlung in Ihrer Anwendung

Damit Ihre Anwendung reibungslos ausgeführt wird, müssen Sie Logik zum Erfassen und Behandeln von Fehlern integrieren. Typische Ansätze umfassen die Verwendung von try-catch-Blöcken oder if-then-Anweisungen.

AWS SDKs Sie führen ihre eigenen Wiederholungen und Fehlerprüfungen durch. Wenn Sie bei der Verwendung eines der Geräte auf einen Fehler stoßen AWS SDKs, können Ihnen der Fehlercode und die Beschreibung bei der Behebung helfen.

Sie sollten auch eine Request ID in der Antwort sehen. Das Request ID kann hilfreich sein, wenn Sie mit dem AWS Support zusammenarbeiten müssen, um ein Problem zu diagnostizieren.

Wiederholversuche bei Fehlern und exponentielles Backoff

Zahlreiche Komponenten im Netzwerk, wie z. B. DNS-Server, Switches und Load Balancer, können irgendwann im Lebenszyklus einer Anforderung Fehler generieren. Die übliche Methode zum Umgang mit diesen Fehlermeldungen in einer vernetzten Umgebung besteht darin, Wiederholversuche in der Client-Anwendung zu implementieren. Diese Methode erhöht die Zuverlässigkeit der Anwendung.

Jedes AWS SDK implementiert die Wiederholungslogik automatisch. Sie können die Parameter für Wiederholversuche an Ihre Bedürfnisse anpassen. Nehmen wir als Beispiel eine Java-Anwendung, die eine Fail-Fast-Strategie erfordert, in der im Falle eines Fehlers keine Wiederholversuche zulässig sind. Mit dem AWS SDK for Java könnten Sie die ClientConfiguration Klasse verwenden und den maxErrorRetry Wert von angeben, 0 um die Wiederholungsversuche auszuschalten. Weitere Informationen finden Sie in der AWS SDK-Dokumentation für Ihre Programmiersprache.

Wenn Sie kein AWS SDK verwenden, sollten Sie die ursprünglichen Anfragen, bei denen Serverfehler auftreten, erneut versuchen (5xx). Client-Fehler (4xx, außer ThrottlingException oder ProvisionedThroughputExceededException) weisen hingegen darauf hin, dass die Anforderung selbst geändert werden muss, um das Problem zu beheben. Erst dann sollte sie wiederholt werden.

Zusätzlich zu einfachen Wiederholungsversuchen implementiert jedes AWS SDK einen exponentiellen Backoff-Algorithmus für eine bessere Flusskontrolle. Das Konzept hinter dem exponentiellen Backoff ist die Verwendung von progressiv längeren Wartezeiten zwischen Wiederholversuchen für aufeinanderfolgende Fehlermeldungen. Zum Beispiel bis zu 50 Millisekunden vor dem ersten Wiederholversuch, bis zu 100 Millisekunden vor dem zweiten, bis zu 200 Millisekunden vor dem dritten und so weiter. Wenn die Anforderung hingegen nach einer Minute nicht erfolgreich war, liegt das Problem möglicherweise an der Anforderungsgröße, die den bereitgestellten Durchsatz übersteigt, und nicht an der Anforderungsrate. Grenzen Sie die maximale Anzahl von Wiederholversuchen bis zu etwa einer Minute ein. Wenn die Anforderung nicht erfolgreich ist, untersuchen Sie Ihre bereitgestellten Durchsatzoptionen.

Anmerkung

Sie AWS SDKs implementieren automatische Wiederholungslogik und exponentiellen Backoff.

Die meisten Algorithmen für das exponentielle Backoff verwenden Jitter (zufällige Verzögerung), um nachfolgende Kollisionen zu verhindern. Da Sie hier nicht versuchen, solche Kollisionen zu verhindern, müssen Sie diese Zufallszahl nicht verwenden. Wenn Sie jedoch gleichzeitige Clients verwenden, kann Jitter dazu beitragen, dass Ihre Anforderungen schneller verarbeitet werden. Weitere Informationen finden Sie im Blogbeitrag zu Exponentielles Backoff und Jitter.

Batchoperationen und Fehlerbehandlung

Die Low-Level-API von DynamoDB unterstützt Batch-Operationen für Lese- und Schreibvorgänge. BatchGetItem liest Elemente aus einzelnen oder mehreren Tabellen und BatchWriteItem schreibt Elemente in einzelne oder mehrere Tabellen oder löscht sie daraus. Diese Batchoperationen werden als Wrapper um andere Nicht-Batch-DynamoDB-Operationen herum implementiert. Mit anderen Worten, BatchGetItem ruft GetItem einmal für jedes Element im Stapel auf. Ebenso ruft BatchWriteItem DeleteItem oder PutItem für jedes Element im Stapel auf, je nachdem.

Eine Stapeloperation kann den Ausfall einzelner Anforderungen im Stapel tolerieren. Nehmen Sie beispielsweise eine BatchGetItem-Anforderung für das Lesen von fünf Elementen. Auch wenn einige der zugrunde liegenden GetItem-Anforderungen fehlschlagen, führt dies nicht zum Ausfall der gesamten BatchGetItem-Operation. Wenn jedoch alle fünf Leseoperationen fehlschlagen, schlägt der gesamte BatchGetItem-Vorgang fehl.

Die Stapeloperationen geben Informationen zu ausgefallenen individuellen Anforderungen zurück, sodass Sie das Problem diagnostizieren und die Operation wiederholen können. Für BatchGetItem werden die jeweiligen Tabellen und primären Schlüssel in den UnprocessedKeys-Wert der Antwort zurückgegeben. Für BatchWriteItem werden die gleichen Informationen in UnprocessedItems zurückgegeben.

Vermutlich ist die Ursache für einen fehlgeschlagenen Lese- oder Schreibvorgang eine Drosselung. Für BatchGetItem steht einer oder mehreren Tabellen in der Stapelanforderung nicht ausreichend Lesekapazität zur Verfügung, um die Operation zu unterstützen. Für BatchWriteItem steht einer oder mehreren Tabellen nicht ausreichend Schreibkapazität zur Verfügung.

Wenn DynamoDB unverarbeitete Elemente zurückgibt, sollten Sie die Batchoperation für diese Elemente wiederholen. Jedoch empfehlen wir dringend, dass Sie einen exponentiellen Backoff-Algorithmus verwenden. Wenn Sie die Stapeloperation sofort wiederholen, können die zugrunde liegenden Lese- und Schreibanforderungen dennoch aufgrund einer Drosselung der einzelnen Tabellen fehlschlagen. Wenn Sie die Stapeloperation mithilfe des exponentiellen Backoff verzögern, werden die einzelnen Anforderungen in dem Stapel eher erfolgreich sein.

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.