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.
İ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
References
- 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ı.