Batas DynamoDBExceededException

TL;DR — Anda mengeluarkan terlalu banyak operasi bidang kontrol sekaligus (atau mencapai batas table/account). Hingga 500 tabel dan indeks mungkin berada dalam status CREATING/UPDATING/DELETING di seluruh akun Anda sekaligus. Buat serial operasi tabel Anda, tunggu ACTIVE, dan coba lagi dengan backoff.

Apa artinya

LimitExceededException: Too many operations for a given subscriber.

Mengapa itu terjadi

  • Terlalu banyak operasi table/index serentak — jumlah kumulatif tabel dan indeks dalam status CREATING, DELETING, atau UPDATING tidak boleh melebihi 500 per akun/Wilayah. (Hingga 500 operasi tabel simultan diperbolehkan per akun — CreateTable, UpdateTable, DeleteTable, UpdateTimeToLive, RestoreTableFromBackup, RestoreTableToPointInTime — dan hanya hingga 250 permintaan bersamaan saat membuat tabel dengan indeks sekunder.)
  • Penyebaran tumpukan massal — CloudFormation/CDK/Terraform membuat atau menghancurkan banyak tabel (atau banyak GSI) secara bersamaan menghabiskan anggaran konkurensi.
  • Kuota sumber daya akun — mencapai batas kuota 2.500 tabel per akun/Wilayah, atau batas 50 pekerjaan impor simultan.
  • Penyalahgunaan Aliran DynamoDB — memanggil GetRecords dengan Limit lebih besar dari 1000, atau lebih dari 2 proses membaca dari pecahan aliran yang sama sekaligus.
  • Catatan: UpdateTable kedua dikeluarkan saat tabel yang sama masih UPDATING muncul sebagai ResourceInUseException, bukan kesalahan ini — namun keduanya berarti "tunggu ACTIVE dulu".

Bagaimana cara memperbaikinya

  1. Serialisasi operasi bidang kontrol — tunggu hingga tabel (dan setiap GSI) menjadi ACTIVE sebelum mengeluarkan perubahan berikutnya. Jajak pendapat DescribeTable dan gerbang di TableStatus === 'ACTIVE'.
  2. Coba lagi dengan backoff eksponensial — batasnya bersifat sementara; percobaan ulang yang tertunda biasanya berhasil setelah operasi dalam penerbangan terhenti.
  3. Penyebaran massal pembatasan — pisahkan tumpukan besar sehingga Anda tidak membuat ratusan tabel/GSI sekaligus, atau tambahkan pengurutan DependsOn secara eksplisit sehingga tidak semuanya diaktifkan secara bersamaan.
  4. Periksa kuota layanan Anda — jika Anda mendekati batas tabel per akun, mintalah peningkatan kuota dalam Service Quotas daripada mencoba lagi selamanya.
  5. Tambahkan GSI satu per satu — Anda hanya dapat membuat atau menghapus satu indeks sekunder global per operasi UpdateTable, jadi buat serial perubahan indeks dan tunggu setiap pengisian ulang.

FAQ

Bagaimana cara memperbaiki LimitExceededException di DynamoDB? Berhenti mengeluarkan operasi bidang kendali (perubahan CreateTable/UpdateTable/DeleteTable/index) secara paralel. Tunggu hingga setiap tabel dan indeks mencapai ACTIVE sebelum perubahan berikutnya, pertahankan jumlah tabel dalam CREATING/UPDATING/DELETING di bawah batas akun, dan coba lagi dengan backoff eksponensial.

Apakah LimitExceededException merupakan kesalahan pembatasan? Ini adalah kesalahan konkurensi bidang kontrol/limit, bukan pembatasan bidang data. Pembatasan bidang data muncul sebagai ProvisionedThroughputExceededException, ThrottlingException, atau RequestLimitExceeded.

Arahkan DynoTable ke Local

DynoTable adalah klien bidang data — GetItem, Query, dan Scan tidak menggunakan anggaran konkurensi bidang kendali menjaga kesalahan ini. Jika skrip penerapan berhasil LimitExceededException saat membuat tabel, gunakan DynoTable untuk menelusuri tabel yang sudah mencapai ACTIVE dan memvalidasi skema dari Pengaturan tabel sementara IaC Anda mencoba lagi. Untuk tumpukan lokal, jalankan DynamoDB Lokal dengan -sharedDb dan terhubung melalui profil Lokal (Menjalankan DynamoDB Lokal) jadi Anda dapat memeriksa penerapan sebagian tanpa menunggu setiap GSI selesai di AWS. Perencana desain tabel tunggal membantu membuat sketsa bentuk tabel sebelum Anda mengaktifkan CreateTable lain di akun sibuk.

Kesalahan terkait

Sumber

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.