ReplicaAlreadyExistsException
In breve — La Region che stai aggiungendo è già nel gruppo di replica della global table. L'aggiunta non è idempotente, quindi una riesecuzione della stessa richiesta (retry, deploy rigiocato, IaC derivato) fallisce una volta che la prima è riuscita. Descrivi prima la tabella e crea solo le repliche che non ci sono — oppure tratta questa eccezione come "già fatto" e prosegui.
Cosa significa
ReplicaAlreadyExistsException: The specified replica is already part of
the global table.La gestione delle repliche è una modifica del control-plane con una precondizione rigorosa: Create richiede che la Region sia assente, Delete richiede che sia presente. Chiedere di creare eu-west-1 quando eu-west-1 replica già la tabella viola quella precondizione — lo stato che volevi esiste già.
Perché accade
- Un passo di provisioning riprovato o rigiocato — il primo tentativo è riuscito (forse dopo che un timeout ha nascosto il successo), e il retry ri-aggiunge la stessa Region.
- Deriva dell'infrastructure-as-code — la replica è stata aggiunta manualmente nella console, poi la pipeline IaC tenta di aggiungerla di nuovo.
- Due percorsi di automazione in race — deploy paralleli o job di espansione delle region che inviano entrambi la stessa creazione di replica.
Come correggerlo
Controlla il gruppo di replica prima di mutarlo:
aws dynamodb describe-table --table-name orders \ --query 'Table.Replicas[].RegionName'Rendi l'operazione idempotente — intercetta questa eccezione sulla creazione (e
ReplicaNotFoundExceptionsull'eliminazione) e trattala come successo; la tabella è già nello stato desiderato:catch (e) { if (e.name === 'ReplicaAlreadyExistsException') return; // desired state reached throw e; }Riconcilia l'IaC con la realtà — importa la replica aggiunta manualmente nel tuo stack invece di lasciare che ogni deploy ritenti la creazione.
Serializza le modifiche alle repliche — un aggiornamento di replica alla volta per tabella; attendi che la tabella torni ad
ACTIVE(e che la nuova replica lasci lo statoCREATING) prima della modifica successiva.
Confermare che una replica serva effettivamente i dati — non solo che l'API l'abbia accettata — è un lavoro da guarda-la-tabella: l'app desktop DynoTable sfoglia direttamente la replica di ogni Region, e il calcolatore dei prezzi DynamoDB mostra il costo continuativo che la Region aggiuntiva comporta.
Errori correlati
- ReplicaNotFoundException — l'immagine speculare: eliminare una Region che non è nel gruppo.
- GlobalTableNotFoundException — confusione tra API legacy e attuale.
- ResourceInUseException — la tabella è a metà modifica.
- Impara: DynamoDB global tables
References
- UpdateGlobalTable — Amazon DynamoDB API Reference
- UpdateTable — Amazon DynamoDB API Reference
- Global tables — Amazon DynamoDB Developer Guide
Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.