ReplicaAlreadyExistsException
TL;DR — The Region you're adding is already in the global table's replication group. The add isn't idempotent, so a re-run of the same request (retry, replayed deploy, drifted IaC) fails once the first one succeeded. Describe the table first and only create replicas that aren't there — or treat this exception as "already done" and move on.
What it means
ReplicaAlreadyExistsException: The specified replica is already part of
the global table.Replica management is a control-plane change with a hard precondition: Create requires the Region to be absent, Delete requires it present. Asking to create eu-west-1 when eu-west-1 already replicates the table violates that precondition — the state you wanted already exists.
Why it happens
- A retried or replayed provisioning step — the first attempt succeeded (perhaps after a timeout hid the success), and the retry re-adds the same Region.
- Infrastructure-as-code drift — the replica was added manually in the console, then the IaC pipeline tries to add it again.
- Two automation paths racing — parallel deploys or region-expansion jobs both submitting the same replica create.
How to fix it
Check the replication group before mutating it:
aws dynamodb describe-table --table-name orders \ --query 'Table.Replicas[].RegionName'Make the operation idempotent — catch this exception on create (and
ReplicaNotFoundExceptionon delete) and treat it as success; the table is already in the desired state:catch (e) { if (e.name === 'ReplicaAlreadyExistsException') return; // desired state reached throw e; }Reconcile IaC with reality — import the manually-added replica into your stack rather than letting every deploy re-attempt the create.
Serialize replica changes — one replica update at a time per table; wait for the table to return to
ACTIVE(and the new replica to leaveCREATING) before the next change.
Confirming a replica actually serves data — not just that the API accepted it — is a look-at-the-table job: the DynoTable desktop app browses each Region's replica directly, and the DynamoDB pricing calculator shows the ongoing cost the extra Region adds.
Related errors
- ReplicaNotFoundException — the mirror image: deleting a Region that isn't in the group.
- GlobalTableNotFoundException — legacy-vs-current API confusion.
- ResourceInUseException — the table is mid-modification.
- Learn: DynamoDB global tables
References
- UpdateGlobalTable — Amazon DynamoDB API Reference
- UpdateTable — Amazon DynamoDB API Reference
- Global tables — Amazon DynamoDB Developer Guide
Last verified 2026-07-13 against the official AWS documentation linked above.