ReplicaAlreadyExistsException
TL;DR — Eklediğiniz Bölge, global tablonun çoğaltma grubunda zaten var. Ekleme idempotent değildir, dolayısıyla aynı isteğin (yeniden deneme, yeniden oynatılan dağıtım, kaymış IaC) yeniden çalıştırılması, ilki başarılı olduğunda başarısız olur. Önce tabloyu tanımlayın ve yalnızca orada olmayan çoğaltmaları oluşturun — ya da bu istisnayı "zaten yapıldı" olarak ele alın ve devam edin.
Ne anlama gelir
ReplicaAlreadyExistsException: The specified replica is already part of
the global table.Çoğaltma yönetimi, kesin bir ön koşulu olan bir kontrol düzlemi değişikliğidir: Create, Bölgenin yok olmasını gerektirir, Delete onun mevcut olmasını gerektirir. eu-west-1 zaten tabloyu çoğaltırken eu-west-1 oluşturmayı istemek, o ön koşulu ihlal eder — istediğiniz durum zaten var.
Neden olur
- Yeniden denenmiş ya da yeniden oynatılmış bir tahsis adımı — ilk deneme başarılı oldu (belki bir zaman aşımı başarıyı gizledikten sonra) ve yeniden deneme aynı Bölgeyi yeniden ekler.
- Altyapı-kod kayması — çoğaltma konsolda elle eklendi, sonra IaC hattı onu tekrar eklemeye çalışıyor.
- Yarışan iki otomasyon yolu — paralel dağıtımlar ya da bölge genişletme işleri, her ikisi de aynı çoğaltma oluşturmasını gönderiyor.
Nasıl düzeltilir
Onu değiştirmeden önce çoğaltma grubunu kontrol edin:
aws dynamodb describe-table --table-name orders \ --query 'Table.Replicas[].RegionName'İşlemi idempotent yapın — oluşturmada bu istisnayı (ve silmede
ReplicaNotFoundException'ı) yakalayın ve onu başarı olarak ele alın; tablo zaten istenen durumda:catch (e) { if (e.name === 'ReplicaAlreadyExistsException') return; // desired state reached throw e; }IaC'yi gerçeklikle uzlaştırın — her dağıtımın oluşturmayı yeniden denemesine izin vermek yerine elle eklenen çoğaltmayı yığınınıza içe aktarın.
Çoğaltma değişikliklerini sıralı yürütün — tablo başına bir seferde bir çoğaltma güncellemesi; bir sonraki değişiklikten önce tablonun
ACTIVE'e dönmesini (ve yeni çoğaltmanınCREATING'den çıkmasını) bekleyin.
Bir çoğaltmanın gerçekten veri sunduğunu — yalnızca API'nin onu kabul ettiğini değil — doğrulamak, tabloya-bakma işidir: DynoTable masaüstü uygulaması her Bölgenin çoğaltmasına doğrudan göz atar ve DynamoDB fiyatlandırma hesaplayıcısı, ek Bölgenin eklediği süregelen maliyeti gösterir.
DynoTable’da kontrol et
Bir kopya oluşturma işlemi başarılı olduktan sonra, yalnızca API'un bunu kabul ettiğini değil, veri sunduğunu da doğrulayın. ⌘P ile kopya Bölgesine geçin, ⌘K ile tabloyu açın ve öğelere göz atın. DynoTable her Bölgenin kopyasını yan yana gösterir, böylece sessiz bir kısmi hata açıkça görülür.
Başka bir Bölge eklemeden önce devam eden çoğaltılmış yazma maliyetini pricing calculator ile tahmin edin. Ayarlar → Profiller altında Bölge başına profilleri yapılandırın ve her birinde Bağlantıyı Test Et komutunu çalıştırın. Bkz. Connect to AWS ve Install. IaC tekrarınız istenen duruma ulaştığında ReplicaAlreadyExistsException'ı başarılı olarak değerlendirin; Bölge zaten kopyalanıyor.
Kaynaklar
- UpdateGlobalTable — Amazon DynamoDB API Reference (2026-07-13 tarihinde doğrulandı)
- Global tables — Amazon DynamoDB Developer Guide (2026-07-13 tarihinde doğrulandı)
İlgili hatalar
- ReplicaNotFoundException — ayna görüntüsü: grupta olmayan bir Bölgeyi silmek.
- GlobalTableNotFoundException — eski-vs-güncel API karışıklığı.
- ResourceInUseException — tablo değiştirilme aşamasında.
- Öğrenin: DynamoDB global tables
Kaynaklar
- UpdateGlobalTable — Amazon DynamoDB API Reference
- UpdateTable — Amazon DynamoDB API Reference
- Global tables — Amazon DynamoDB Developer Guide
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.