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

  1. Check the replication group before mutating it:

    aws dynamodb describe-table --table-name orders \
      --query 'Table.Replicas[].RegionName'
  2. Make the operation idempotent — catch this exception on create (and ReplicaNotFoundException on 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;
    }
  3. Reconcile IaC with reality — import the manually-added replica into your stack rather than letting every deploy re-attempt the create.

  4. Serialize replica changes — one replica update at a time per table; wait for the table to return to ACTIVE (and the new replica to leave CREATING) before the next change.

  5. 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

References

Last verified 2026-07-13 against the official AWS documentation linked above.

Work with DynamoDB without the Console

A fast DynamoDB desktop client that runs the real SQL DynamoDB can’t — JOINs, GROUP BY, aggregates — with visual editing and an AI agent on your own Bedrock keys.

Free 30-day trial, no credit card — then the Free plan with no time limit.