Mencoba memodifikasi GSI yang sedang dibuat
TL;DR — Saat indeks sekunder global sedang dibangun (IndexStatus = CREATING), DynamoDB menolak perubahan struktural yang bertentangan. Selama fase awal alokasi sumber daya, Anda tidak dapat mengubah indeks baru, mengubah throughput indeks atau tabel yang disediakan, menambah atau menghapus indeks lain, atau menghapus tabel. Setelah pengisian ulang dimulai, Anda dapat menghapus indeks dalam penerbangan atau mengubah throughput tabel/GSI lagi, tetapi menambahkan atau menghapus indeks lain dan menghapus tabel tetap diblokir hingga menjadi ACTIVE. Buat perubahan GSI satu per satu — satu kali buat atau hapus per UpdateTable.
Apa artinya
ValidationException: Attempting to modify a GSI that is being createdMengapa itu terjadi
- Operasi indeks yang tumpang tindih —
UpdateTable(atau penerapan IaC) mencoba memodifikasi/delete menjadi GSI, atau menambahkan yang kedua, saat yang pertama masih dibuat. - Pengelompokan CloudFormation/Terraform — alat ini mencoba beberapa perubahan GSI dalam satu pembaruan; DynamoDB hanya mengizinkan satu GSI membuat atau menghapus per
UpdateTable. - Perubahan throughput selama alokasi sumber daya — saat indeks baru masih mengalokasikan sumber daya (
Backfilling: false), Anda tidak dapat mengubah throughput yang disediakan pada indeks atau tabel tersebut; perubahan tersebut diperbolehkan lagi setelah penimbunan kembali dimulai. - Menghapus tabel terlalu cepat — pembongkaran yang mempercepat pengisian ulang.
Bagaimana cara memperbaikinya
- Tunggu
ACTIVE. Lakukan pollingDescribeTabledan periksa setiapGlobalSecondaryIndexes[].IndexStatus; hanya lanjutkan setelahACTIVE.Deskripsi indeks juga membawa booleanaws dynamodb describe-table --table-name <Table> \ --query "Table.GlobalSecondaryIndexes[].{Name:IndexName,Status:IndexStatus}"Backfilling(false = alokasi sumber daya, true = pengisian ulang), dan metrik CloudWatchOnlineIndexPercentageProgressmelacak build. - Perubahan indeks urutan — satu create/delete per
UpdateTable; jangan menambahkan GSI baru saat yang lain sedang dibuat. - Di CloudFormation/Terraform, pisahkan penambahan GSI ke penerapan terpisah sehingga setiap pengisian ulang selesai sebelum perubahan berikutnya.
- Tunda perubahan indeks dan penghapusan tabel lainnya hingga indeks menjadi
ACTIVE. Perlu dana talangan? Setelah pengisian ulang dimulai, Anda dapat membatalkan pembangunan dengan menghapus indeks yang sedang dibuat.
Sebelum mencoba lagi di DynoTable
Meskipun GSI adalah CREATING, buka tabel di DynoTable dan perhatikan status indeks di bawah detail tabel sebelum Anda mengantri UpdateTable lainnya. Aplikasi menyegarkan DescribeTable saat Anda menjelajah — saat IndexStatus beralih ke ACTIVE, indeks muncul di pemilih pola kueri dan Anda dapat melakukan Kueri dari mode Visual atau pembuat kueri.
Jangan menumpuk perubahan CloudFormation/Terraform GSI dalam satu penerapan saat DynoTable masih menampilkan CREATING. Urutan diterapkan; gunakan DynoTable sebagai panel status kebenaran dasar di antara penerapan. Jika Anda perlu membatalkan build setelah pengisian ulang dimulai, hapus indeks tersebut dari IaC/CLI Anda, lalu konfirmasikan bahwa indeks tersebut menghilang dari daftar indeks DynoTable.
Sumber
- Mengelola Indeks Sekunder Global (diverifikasi 13-07-2026)
- UpdateTable — Referensi Amazon DynamoDB API (diverifikasi 13-07-2026)
Kesalahan terkait
- Indeks sekunder lokal harus ditentukan saat pembuatan tabel — setara dengan LSI (LSI tidak dapat ditambahkan sama sekali).
- ResourceInUseException — beroperasi pada table/index yang tidak dalam keadaan dapat dimodifikasi.
- Sumber daya yang diminta tidak ditemukan / indeks tidak ditemukan — menanyakan indeks yang belum siap atau tidak ada.
- Pelajari: GSI vs LSI · GSI internal
Referensi
- Mengelola Indeks Sekunder Global di DynamoDB — Panduan Pengembang Amazon DynamoDB
- UpdateTable — Referensi Amazon DynamoDB API
- Penanganan kesalahan dengan DynamoDB — Panduan Pengembang Amazon DynamoDB
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.