ReplicaAlreadyExistsException
TL;DR: la regione che stai aggiungendo è già nel gruppo di replica della tabella globale. L'aggiunta non è idempotente, quindi una nuova esecuzione della stessa richiesta (riprova, distribuzione riprodotta, IaC alla deriva) fallisce una volta che la prima ha avuto esito positivo. Descrivi prima la tabella e crea solo le repliche che non sono presenti oppure considera questa eccezione come "già completata" e vai avanti.
Cosa significa
ReplicaAlreadyExistsException: The specified replica is already part of
the global table.La gestione della replica è una modifica del piano di controllo con una precondizione difficile: "Crea" richiede che la regione sia assente, "Elimina" richiede che sia presente. Chiedere di creare "eu-west-1" quando "eu-west-1" replica già la tabella viola tale precondizione: lo stato desiderato esiste già.
Perché succede
- Un passaggio di provisioning ripetuto o ripetuto: il primo tentativo è riuscito (forse dopo un timeout ha nascosto l'esito positivo) e il nuovo tentativo aggiunge nuovamente la stessa regione.
- Deriva dell'infrastruttura come codice: la replica è stata aggiunta manualmente nella console, quindi la pipeline IaC tenta di aggiungerla nuovamente.
- Due percorsi di automazione in competizione: distribuzioni parallele o processi di espansione della regione che inviano entrambi la stessa creazione di replica.
Come risolverlo
Controlla il gruppo di replica prima di modificarlo:
aws dynamodb describe-table --table-name orders \ --query 'Table.Replicas[].RegionName'Rendi l'operazione idempotente: rileva questa eccezione durante la creazione (e
ReplicaNotFoundExceptiondurante l'eliminazione) e trattala come un successo; la tabella è già nello stato desiderato:catch (e) { if (e.name === 'ReplicaAlreadyExistsException') return; // desired state reached throw e; }Riconcilia IaC con la realtà: importa la replica aggiunta manualmente nel tuo stack anziché consentire a ogni distribuzione di ritentare la creazione.
Serializza le modifiche alla replica: un aggiornamento della replica alla volta per tabella; attendere che la tabella ritorni su "ACTIVE" (e che la nuova replica lasci "CREATING") prima della modifica successiva.
Registra la regione a ogni tentativo di creazione. Quando IaC viene riprodotto, l'eccezione nomina la regione già esistente: importa quella replica nello stato invece di ricrearla.
Verificalo in DynoTable
Dopo che la creazione di una replica ha avuto esito positivo, conferma che fornisce dati, non solo che API li abbia accettati. Passa alla regione replica con ⌘P, apri la tabella con ⌘K e sfoglia gli elementi. DynoTable mostra la copia di ciascuna regione affiancata, quindi è ovvio un fallimento parziale silenzioso.
Prima di aggiungere un'altra regione, stima il costo di scrittura replicata in corso con il calcolatore dei prezzi. Configura i profili per regione in Impostazioni → Profili ed esegui Test connessione su ciascuno. Consulta Connetti a AWS e Installa. Considera "ReplicaAlreadyExistsException" come un successo quando la riproduzione IaC raggiunge lo stato desiderato: la regione si sta già replicando.
Fonti
- Riferimento UpdateGlobalTable — Amazon DynamoDB API (verificato il 13-07-2026)
- Tabelle globali: Guida per gli sviluppatori di Amazon DynamoDB (verificato il 13-07-2026)
Errori correlati
- ReplicaNotFoundException — l'immagine speculare: eliminazione di una regione che non è nel gruppo.
- GlobalTableNotFoundException – confusione tra legacy e corrente API.
- ResourceInUseException: la tabella è a metà della modifica.
- Impara: DynamoDB tabelle globali
Riferimenti
- Riferimento UpdateGlobalTable — Amazon DynamoDB API
- UpdateTable - Riferimento Amazon DynamoDB API
- Tabelle globali: Guida per gli sviluppatori di Amazon DynamoDB
Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale del AWS collegata sopra.