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 created

Mengapa itu terjadi

  • Operasi indeks yang tumpang tindihUpdateTable (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

  1. Tunggu ACTIVE. Lakukan polling DescribeTable dan periksa setiap GlobalSecondaryIndexes[].IndexStatus; hanya lanjutkan setelah ACTIVE.
    aws dynamodb describe-table --table-name <Table> \
      --query "Table.GlobalSecondaryIndexes[].{Name:IndexName,Status:IndexStatus}"
    Deskripsi indeks juga membawa boolean Backfilling (false = alokasi sumber daya, true = pengisian ulang), dan metrik CloudWatch OnlineIndexPercentageProgress melacak build.
  2. Perubahan indeks urutan — satu create/delete per UpdateTable; jangan menambahkan GSI baru saat yang lain sedang dibuat.
  3. Di CloudFormation/Terraform, pisahkan penambahan GSI ke penerapan terpisah sehingga setiap pengisian ulang selesai sebelum perubahan berikutnya.
  4. 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

Kesalahan terkait

Referensi

Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.