Attempting to modify a GSI that is being created
TL;DR — Bir global ikincil indeks oluşturulurken (IndexStatus = CREATING), DynamoDB çakışan yapısal değişiklikleri reddeder. İlk kaynak ayırma aşamasında yeni indeksi değiştiremez, indeksin veya tablonun sağlanan verimini değiştiremez, başka indeks ekleyemez veya silemez ya da tabloyu silemezsiniz. Geri doldurma başladığında sürmekte olan indeksi silebilir veya tablo/GSI verimini yeniden değiştirebilirsiniz, ancak başka indeks ekleme veya silme ve tabloyu silme, indeks ACTIVE olana kadar engelli kalır. GSI değişikliklerini birer birer yapın — her UpdateTable için bir oluşturma veya silme.
Ne anlama gelir
ValidationException: Attempting to modify a GSI that is being createdDolu bir tabloda bir GSI oluşturmak bir geri doldurma tetikler — DynamoDB mevcut öğeleri arka planda yeni indekse yeniden oynatır. Bu aşama boyunca indeksin IndexStatus değeri CREATING'dir. Geri doldurma sırasında DynamoDB, oluşumun tutarlı kalması için indeks ya da tablo üzerinde yapılacak diğer yapısal değişiklikleri reddeder. Bu bir HTTP 400 ValidationException'dır; hemen yeniden denemek, indeks bitene kadar başarısız olur.
Neden olur
- Çakışan indeks işlemleri — ilki hâlâ oluşturulurken bir
UpdateTable(ya da bir IaC uygulaması) bir GSI'yi değiştirmeye/silmeye ya da ikincisini eklemeye çalışıyor. - CloudFormation/Terraform toplu işlemi — araç, tek bir güncellemede birden çok GSI değişikliği dener; DynamoDB her
UpdateTableiçin yalnızca bir GSI oluşturma veya silmeye izin verir. - Kaynak ayırma sırasında verim değişikliği — yeni indeks hâlâ kaynak ayırırken (
Backfilling: false), o indeksin ya da tablonun sağlanan verimini değiştiremezsiniz; bu değişikliklere geri doldurma başladığında yeniden izin verilir. - Tabloyu çok erken silmek — geri doldurmayla yarışan bir kaldırma.
Nasıl düzeltilir
ACTIVEiçin bekleyin.DescribeTable'ı yoklayın ve herGlobalSecondaryIndexes[].IndexStatusdeğerini kontrol edin; yalnızcaACTIVEolduğunda devam edin.İndeks açıklaması ayrıca biraws dynamodb describe-table --table-name <Table> \ --query "Table.GlobalSecondaryIndexes[].{Name:IndexName,Status:IndexStatus}"Backfillingboolean değeri (false = kaynak ayırma, true = geri doldurma) taşır veOnlineIndexPercentageProgressCloudWatch metriği oluşumu izler.- İndeks değişikliklerini sıraya koyun — her
UpdateTableiçin bir oluşturma/silme; bir tanesi oluşturulurken yeni bir GSI eklemeyin. - CloudFormation/Terraform'da, GSI eklemelerini ayrı dağıtımlara bölün, böylece her geri doldurma bir sonraki değişiklikten önce tamamlansın.
- Diğer indeks değişikliklerini ve tablo silmeyi indeks
ACTIVEolana kadar erteleyin. Vazgeçmeniz mi gerekiyor? Geri doldurma başladıktan sonra, oluşturulmakta olan indeksi silerek oluşumu iptal edebilirsiniz.
DynoTable’da yeniden denemeden önce
GSI CREATING iken, DynoTable'deki tabloyu açın ve başka bir UpdateTable'yi sıraya koymadan önce tablo ayrıntıları altında indeks durumunu izleyin. Uygulama sen göz atarken DescribeTable yenilenir; IndexStatus ACTIVE'e döndüğünde, dizin sorgu modeli seçicide görünür ve onu Görsel moddan veya query builder'dan sorgulayabilirsiniz.
DynoTable hâlâ CREATING değerini gösterirken CloudFormation/Terraform GSI değişikliklerini tek bir uygulamada üst üste koymayın. Sıra dağıtılır; arasındaki temel gerçek durum paneli geçerli olduğundan DynoTable kullanın. Dolgu başladıktan sonra bir derlemeyi iptal etmeniz gerekirse bu dizini IaC/CLI'nizden silin ve ardından DynoTable dizin listesinden kaybolduğunu onaylayın.
Kaynaklar
- Managing Global Secondary Indexes (2026-07-13 tarihinde doğrulandı)
- UpdateTable — Amazon DynamoDB API Reference (2026-07-13 tarihinde doğrulandı)
İlgili hatalar
- Local secondary indexes must be specified at table creation — LSI eşdeğeri (LSI'ler hiç eklenemez).
- ResourceInUseException — değiştirilebilir durumda olmayan bir tablo/indeks üzerinde işlem yapmak.
- Requested resource not found / index not found — hazır olmayan ya da var olmayan bir indeksi sorgulamak.
- Öğrenin: GSI vs LSI · GSI internals
Kaynaklar
- Managing Global Secondary Indexes in DynamoDB — Amazon DynamoDB Developer Guide
- UpdateTable — Amazon DynamoDB API Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.