DynamoDB global table version mismatch

TL;DR — DynamoDB kennt zwei Global-Table-Versionen: 2017.11.29 (Legacy) und 2019.11.21 (Current). Eine Legacy-Global-Table anzulegen oder ein Replikat hinzuzufügen scheitert, wenn die beteiligten Tabellen die Anforderungen nicht erfüllen — Legacy-Replikate müssen leer sein, denselben Namen, dasselbe Key-Schema und passende GSIs haben, DynamoDB Streams (New und Old Image) aktiviert haben und eine einheitliche Write Capacity nutzen — und die APIs der einen Version auf die Tabellen der anderen zu richten scheitert komplett. Gleich die Konfiguration jedes Replikats an (oder steig auf die Current-Version um) und wiederhole.

Was es bedeutet

ValidationException: Cannot create a global table from a table with ...
ValidationException: ... replicas must have the same ... across all regions

Die Legacy-Version (2017.11.29) fügt unabhängig erstellte regionale Tabellen zu einer benannten Global Table zusammen, also verlangt sie, dass die Mitgliedstabellen exakt zusammenpassen. Die Current-Version (2019.11.21) verwaltet die Replikation auf der Tabelle selbst — du fügst Replikate mit UpdateTable hinzu — und synchronisiert TTL-, Auto-Scaling-, GSI- und Encryption-at-Rest-Einstellungen automatisch über die Replikate hinweg. Versions-Mismatch-Fehler treten auf, wenn die Tabellen, die du kombinierst, uneinig sind, oder wenn das Tooling mit der API-Oberfläche der falschen Version spricht.

Warum es passiert

  • Eine Replikattabelle ist nicht leer — die Legacy-CreateGlobalTable-/UpdateGlobalTable-APIs verlangen, dass jede Mitgliedstabelle keine Daten enthält.
  • Namen- oder Key-Schema-Mismatch — alle Replikate müssen denselben Tabellennamen und Primärschlüssel teilen.
  • Nicht passende GSIs — Global Secondary Indexes müssen über die Replikate hinweg in Namen und in Hash-/Sort-Key übereinstimmen.
  • Streams aus oder falscher View-Typ — jedes Legacy-Replikat braucht DynamoDB Streams aktiviert mit sowohl den neuen als auch den alten Images des Items.
  • Inkonsistente Schreibkapazität — AWS verlangt, dass Schreibkapazitätseinstellungen konsistent über die Replikattabellen und passenden Sekundärindizes gesetzt sind (Auto-Scaling empfohlen oder gleiche replizierte Write Capacity Units).
  • Das Mischen der zwei Versionen — die Legacy-APIs (DescribeGlobalTable, UpdateGlobalTable) auf eine Current-Version-Tabelle zu richten gibt GlobalTableNotFoundException zurück, statt zu funktionieren.
  • Veraltete AWS CLI/SDK — eine Version, die dem 2019.11.21-Modell vorausgeht, kann keine UpdateTable-basierte Replikatverwaltung antreiben.

So behebst du es

  1. Vereinheitliche die beteiligten Tabellen über alle Regionen — gleicher Name und gleiches Key-Schema, passende GSIs, aktivierte Streams mit New + Old Image und einheitliche Write-Capacity-/Auto-Scaling-Ziele.
  2. Prüf den Ist-Zustand mit DescribeTable pro Region (Current) oder DescribeGlobalTableSettings (eine reine Legacy-API) und korrigier Abweichungen entsprechend mit UpdateTable bzw. UpdateGlobalTableSettings.
  3. Steig bewusst von Legacy auf Current um, über den Update version-Ablauf in der Konsole — er braucht die Berechtigung dynamodb:UpdateGlobalTableversion in jeder Replikat-Region, und die Replikate bedienen während des Upgrades weiter Reads und Writes.
  4. Aktualisier deine AWS CLI bzw. dein SDK auf einen aktuellen Stand, bevor du Replikate der Current-Version verwaltest.
  5. Füg Replikate an eine kompatible Basistabelle an — Replikate der Current-Version kommen per UpdateTable dazu (die Tabelle darf bereits Daten enthalten, aber in der Zielregion darf noch keine Tabelle dieses Namens existieren); Legacy-Replikate müssen leer starten.
  6. Aktivier Streams vor dem Legacy-Create. Jedes Legacy-Replikat braucht DynamoDB Streams mit New und Old Image — verifizier das mit DescribeTable in jeder Region.

In DynoTable messen

Compare schema, GSIs, and stream settings across Regions bevor du create a global table — switch with ⌘P, open each replica with ⌘K, and expand the Indexes and Stream panels side by side.

Estimate replicated write cost with the Pricing-Rechner. Configure each Region under Einstellungen → Profile with Verbindung testen. Siehe Mit AWS verbinden und Installation.

Quellen

Verwandte Fehler

Referenzen

Zuletzt verifiziert am 2026-07-13 gegen die offizielle, oben verlinkte 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.