ReplicaAlreadyExistsException
TL;DR — Die Region, die du hinzufügst, ist bereits in der Replikationsgruppe der Global Table. Das Hinzufügen ist nicht idempotent, sodass ein erneuter Lauf desselben Requests (Retry, wiederholtes Deployment, abgedrifteter IaC) fehlschlägt, sobald der erste erfolgreich war. Beschreibe zuerst die Tabelle und erstelle nur Replicas, die noch nicht da sind — oder behandle diese Exception als "bereits erledigt" und mach weiter.
Was es bedeutet
ReplicaAlreadyExistsException: The specified replica is already part of
the global table.Die Replica-Verwaltung ist eine Control-Plane-Änderung mit einer harten Vorbedingung: Create verlangt, dass die Region fehlt, Delete verlangt, dass sie vorhanden ist. eu-west-1 erstellen zu wollen, wenn eu-west-1 die Tabelle bereits repliziert, verletzt diese Vorbedingung — der Zustand, den du wolltest, existiert bereits.
Warum es passiert
- Ein wiederholter oder erneut abgespielter Provisioning-Schritt — der erste Versuch war erfolgreich (vielleicht nachdem ein Timeout den Erfolg verdeckt hat), und der Retry fügt dieselbe Region erneut hinzu.
- Infrastructure-as-Code-Drift — die Replica wurde manuell in der Konsole hinzugefügt, dann versucht die IaC-Pipeline, sie erneut hinzuzufügen.
- Zwei Automatisierungspfade im Wettlauf — parallele Deployments oder Region-Erweiterungs-Jobs, die beide dasselbe Replica-Create einreichen.
So behebst du es
Prüfe die Replikationsgruppe, bevor du sie veränderst:
aws dynamodb describe-table --table-name orders \ --query 'Table.Replicas[].RegionName'Mache die Operation idempotent — fange diese Exception beim Erstellen ab (und
ReplicaNotFoundExceptionbeim Löschen) und behandle sie als Erfolg; die Tabelle ist bereits im gewünschten Zustand:catch (e) { if (e.name === 'ReplicaAlreadyExistsException') return; // desired state reached throw e; }Bringe IaC mit der Realität in Einklang — importiere die manuell hinzugefügte Replica in deinen Stack, statt bei jedem Deployment das Create erneut zu versuchen.
Serialisiere Replica-Änderungen — ein Replica-Update nach dem anderen pro Tabelle; warte, bis die Tabelle zu
ACTIVEzurückkehrt (und die neue Replica den StatusCREATINGverlässt), bevor die nächste Änderung erfolgt.
Zu bestätigen, dass eine Replica tatsächlich Daten bereitstellt — nicht nur, dass die API sie akzeptiert hat — ist eine Aufgabe fürs direkte Draufschauen: Die DynoTable-Desktop-App durchsucht die Replica jeder Region direkt, und der DynamoDB-Preisrechner zeigt die laufenden Kosten, die die zusätzliche Region verursacht.
Verwandte Fehler
- ReplicaNotFoundException — das Spiegelbild: das Löschen einer Region, die nicht in der Gruppe ist.
- GlobalTableNotFoundException — Verwechslung von Legacy- und aktueller API.
- ResourceInUseException — die Tabelle wird gerade modifiziert.
- Learn: DynamoDB Global Tables
Referenzen
- UpdateGlobalTable — Amazon DynamoDB API Reference
- UpdateTable — Amazon DynamoDB API Reference
- Global tables — Amazon DynamoDB Developer Guide
Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.