DynamoDB S3 import failed — invalid format

TL;DR — ImportTable endete mit Status FAILED, FailureCode: ItemValidationError und der Meldung "Some of the items failed validation checks and were not imported." Die Quellobjekte passen nicht zu dem InputFormat/InputCompressionType, den du angegeben hast, oder den Items fehlt der Primärschlüssel. Korrigiere Format/Kompression passend zu den Objekten, stell sicher, dass jedes Item den Schlüssel trägt, und starte den Import erneut.

Was es bedeutet

"FailureCode": "ItemValidationError",
"FailureMessage": "Some of the items failed validation checks and were not
imported. Please check CloudWatch error logs for more details."

# In /aws-dynamodb/imports CloudWatch logs:
ValidationException: One or more parameter values were invalid: Missing the key pk in the item

DynamoDB Import aus S3 validiert jedes Objekt gegen das Format und die Komprimierung, die du im ImportTable-Aufruf deklariert hast — das InputFormat (DYNAMODB_JSON, ION oder CSV) und der InputCompressionType (GZIP, ZSTD oder NONE) haben Vorrang vor der Dateiendung. Wenn die Bytes nicht wie deklariert parsen oder einem Item der Primärschlüssel der Tabelle fehlt, wird dieses Item übersprungen (der Import fährt mit dem nächsten Item fort) und der Job endet FAILED.

Warum es passiert

  • Format-Mismatch — du hast DYNAMODB_JSON angegeben, aber die Objekte sind eigentlich CSV (oder reines JSON), sodass nichts parst.
  • Komprimierungs-Mismatch — Objekte unter dem Präfix sind unterschiedlich komprimiert (einige GZIP, einige NONE); sie müssen alle dieselbe verwenden.
  • Nicht unterstützte Komprimierung — nur GZIP, ZSTD oder NONE sind erlaubt; andere Codecs schlagen fehl.
  • Fehlender Primärschlüssel — ein CSV-/JSON-Item hat keine Spalte/kein Attribut, das zum deklarierten Partition- (oder Sort-) Key passt: „Missing the key pk in the item."
  • Typ-Mismatch beim Schlüssel — der Typ des importierten Schlüssels passt nicht zu den AttributeDefinitions der Tabelle (z. B. ein numerischer Schlüssel als String importiert).
  • Ein nicht parsbares Objekt unter dem Präfix — jedes Objekt, das zum Präfix passt, wird als Daten gelesen, sodass ein verirrter Platzhalter oder eine fehlerhafte Datei die Validierung nicht besteht.

So behebst du es

  1. Lass InputFormat zu den tatsächlichen Bytes passen — CSV-Dateien → CSV, DynamoDB JSON → DYNAMODB_JSON, Amazon Ion → ION.
  2. Sorge dafür, dass jedes Objekt unter dem Präfix dieselbe Komprimierung verwendet, und setze InputCompressionType passend (GZIP/ZSTD/NONE).
  3. Stelle sicher, dass jedes Item den Primärschlüssel hat — für CSV die Schlüsselspalte (und Header) mit einem Namen, der zum deklarierten KeySchema passt.
  4. Gleiche die Typen der Schlüsselattribute an die AttributeDefinitions der Tabelle an (S/N/B).
  5. Lies die CloudWatch-Fehlerprotokolle unter /aws-dynamodb/imports, Log-Stream <import-id>/error, für den genauen Grund pro Item.
  6. Behalte nur parsbare Datenobjekte unter dem Präfix; lade Daten über CLI/SDK hoch, statt Ordner in der Konsole zu erstellen.

Baust du die Importdatei aus bestehenden Daten? Die DynoTable Desktop-App exportiert und previewt DynamoDB JSON, sodass du das Format und das Vorhandensein des Primärschlüssels verifizieren kannst, bevor du Objekte nach S3 pushst.

DynoTable-Workbench

Validate import Dateien auf before upload — export a sample item from DynoTable as DynamoDB JSON (⌘K → copy item) and confirm key attributes in the JSON Converter. Check item sizes with the Item-Size-Rechner when large objects cause parse failures.

Configure the S3 account profile under Einstellungen → Profile with Verbindung testen; switch with ⌘P. Siehe Mit AWS verbinden und Installation.

Quellen

Verwandte Fehler

Referenzen

Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.

Mit DynamoDB ohne die Console arbeiten

Ein schneller DynamoDB-Desktop-Client, der das echte SQL ausführt, das DynamoDB nicht kann — JOINs, GROUP BY, Aggregationen — mit visueller Bearbeitung und einem KI-Agenten auf deinen eigenen Bedrock-Schlüsseln.

30 Tage kostenlos testen, keine Kreditkarte — danach der Kostenlos-Tarif ohne Zeitlimit.