ReplicaAlreadyExistsException
TL;DR — Region yang Anda tambahkan sudah ada dalam grup replikasi global table. Penambahan tidak idempoten, jadi menjalankan ulang permintaan yang sama (retry, deploy yang diputar ulang, IaC yang menyimpang) gagal setelah yang pertama berhasil. Describe tabel terlebih dahulu dan hanya buat replika yang belum ada — atau perlakukan exception ini sebagai "sudah selesai" dan lanjutkan.
Apa artinya
ReplicaAlreadyExistsException: The specified replica is already part of
the global table.Manajemen replika adalah perubahan control-plane dengan prasyarat keras: Create mensyaratkan Region tidak ada, Delete mensyaratkan Region ada. Meminta membuat eu-west-1 ketika eu-west-1 sudah mereplikasi tabel melanggar prasyarat itu — keadaan yang Anda inginkan sudah ada.
Mengapa terjadi
- Langkah provisioning yang dicoba ulang atau diputar ulang — upaya pertama berhasil (mungkin setelah timeout menyembunyikan keberhasilan), dan retry menambahkan ulang Region yang sama.
- Drift infrastructure-as-code — replika ditambahkan manual di konsol, lalu pipeline IaC mencoba menambahkannya lagi.
- Dua jalur otomasi berlomba — deploy paralel atau job perluasan region keduanya mengirim create replika yang sama.
Cara memperbaikinya
Periksa grup replikasi sebelum memutasinya:
aws dynamodb describe-table --table-name orders \ --query 'Table.Replicas[].RegionName'Buat operasi idempoten — tangkap exception ini pada create (dan
ReplicaNotFoundExceptionpada delete) dan perlakukan sebagai sukses; tabel sudah dalam keadaan yang diinginkan:catch (e) { if (e.name === 'ReplicaAlreadyExistsException') return; // desired state reached throw e; }Rekonsiliasi IaC dengan realitas — impor replika yang ditambahkan manual ke stack Anda alih-alih membiarkan setiap deploy mencoba ulang create.
Serialisasikan perubahan replika — satu update replika pada satu waktu per tabel; tunggu tabel kembali ke
ACTIVE(dan replika baru meninggalkanCREATING) sebelum perubahan berikutnya.
Mengonfirmasi replika benar-benar melayani data — bukan hanya bahwa API menerimanya — adalah tugas melihat-tabel: aplikasi desktop DynoTable menelusuri replika setiap Region secara langsung, dan kalkulator harga DynamoDB menunjukkan biaya berkelanjutan yang ditambahkan Region ekstra.
Kesalahan terkait
- ReplicaNotFoundException — bayangan cermin: menghapus Region yang tidak ada dalam grup.
- GlobalTableNotFoundException — kebingungan API legacy-vs-current.
- ResourceInUseException — tabel sedang dimodifikasi.
- Pelajari: DynamoDB global tables
References
- UpdateGlobalTable — Amazon DynamoDB API Reference
- UpdateTable — Amazon DynamoDB API Reference
- Global tables — Amazon DynamoDB Developer Guide
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.