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.Log the Region on every create attempt. When IaC replays, the exception names the Region that already exists — import that replica into state instead of re-creating it.
Check it in DynoTable
After a replica create succeeds, confirm it serves data — not just that the API accepted it. Switch to the replica Region with ⌘P, open the table with ⌘K, and browse items. DynoTable shows each Region's copy side by side so a silent partial failure is obvious.
Before adding another Region, estimate the ongoing replicated-write cost with the pricing calculator. Configure profiles per Region under Settings → Profiles and run Test Connection on each. See Connect to AWS and Install. Treat ReplicaAlreadyExistsException as success when your IaC replay reaches the desired state — the Region is already replicating.
Sources
- UpdateGlobalTable — Amazon DynamoDB API Reference (verified 2026-07-13)
- Global tables — Amazon DynamoDB Developer Guide (verified 2026-07-13)
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.