Terlalu banyak tindakan dalam panggilan TransactWriteItems
TL;DR — Transaksi DynamoDB dibatasi hingga 100 tindakan. TransactWriteItems (dan TransactGetItems) menolak permintaan dengan lebih dari 100 tindakan Put/Update/Delete/ConditionCheck. Bagi pekerjaan menjadi beberapa transaksi — atau, jika Anda tidak memerlukan atomisitas semua atau tidak sama sekali, gunakan BatchWriteItem (25 per panggilan) sebagai gantinya.
Apa artinya
ValidationException: 1 validation error detected: Value '<your request>' at 'transactItems' failed to satisfy constraint: Member must have length less than or equal to 100TransactWriteItems mengelompokkan tindakan yang semuanya dilakukan atau dibatalkan secara bersamaan, namun satu transaksi dapat menampung paling banyak 100 tindakan, dan ukuran agregat item dalam transaksi tidak boleh melebihi 4 MB. Lewati lebih banyak dan DynamoDB menolak seluruh panggilan sebelum mengeksekusi. Pesan tersebut sering kali dibaca sebagai batasan pada panjang daftar TransactItems. Ini adalah HTTP 400 ValidationException, sisi klien, dan tidak dapat dicoba ulang hingga transaksinya lebih kecil.
Mengapa itu terjadi
- Membuat terlalu banyak penulisan secara atomik — mencoba melakukan 150 penempatan dalam satu transaksi.
- Perulangan yang menambahkan tindakan tak terbatas ke satu daftar
TransactItems. - Fan-out yang melebihi 100 — satu operasi logis yang menyentuh lebih dari 100 item dan dimodelkan sebagai satu transaksi.
- Menghitung hanya menulis — ingat tindakan
ConditionCheckjuga dihitung dalam 100.
Bagaimana cara memperbaikinya
- Bagi menjadi beberapa transaksi yang masing-masing berisi ≤100 tindakan — dengan catatan bahwa setiap transaksi bersifat atomik secara independen (tidak dapat digabungkan kembali).
- Pertimbangkan kembali apakah Anda memerlukan transaksi sama sekali — jika penulisan tidak memerlukan semantik semua atau tidak sama sekali,
BatchWriteItem(≤25 per panggilan) lebih murah dan lebih ramah throughput. - Kurangi jumlah tindakan — lipat beberapa mutasi ke satu item menjadi satu
Updatedengan gabunganUpdateExpression. - Modelkan agregat secara berbeda sehingga satu perubahan logis menyentuh lebih sedikit item.
- Perhatikan batas ukuran item agregat 4 MB di samping batas 100 tindakan — item berukuran besar bisa gagal bahkan di bawah 100 tindakan.
Cara mereproduksinya
Sebuah transaksi dengan 101 tindakan, satu tindakan melampaui batas. Penolakannya adalah ValidationException biasa pada panjang array, bukan kesalahan khusus transaksi:
const actions = Array.from({length: 101}, (_, i) => ({
Put: {TableName: 'orders', Item: {pk: {S: `T#${i}`}, sk: {S: 'META'}}}
}));
await client.send(new TransactWriteItemsCommand({TransactItems: actions}));Keluaran sebenarnya:
ValidationException: Member must have length less than or equal to 100
HTTP 400Perhatikan kata-katanya: DynamoDB menolak ini sebagai batasan panjang pada array TransactItems, jadi string yang Anda dapatkan sama sekali tidak menyebut transaksi. Mencari pesannya saja tidak akan jelas mengarahkan Anda ke sini.
Workbench DynoTable
Sebelum Anda melakukan 100+ penulisan secara atom, periksa item target di DynoTable — buka tabel dengan ⌘K dan konfirmasikan setiap kunci ada. Staging (⌘S) memungkinkan Anda menguji transaksi yang lebih kecil terlebih dahulu.
Buat pembaruan multi-item di Pembuat Ekspresi dan lipat tindakan duplikat pada satu kunci menjadi satu Update. Ganti profil dengan ⌘P; lihat Menghubungkan ke AWS dan Instal.
Sumber
- TransactWriteItems — Referensi Amazon DynamoDB API (diverifikasi 13-07-2026)
- Transaksi Amazon DynamoDB: Cara kerjanya (diverifikasi 13-07-2026)
Kesalahan terkait
- Permintaan transaksi tidak dapat mencakup beberapa operasi pada satu item — item yang sama ditargetkan dua kali dalam satu transaksi.
- TransactionCanceledException — transaksi valid yang dibatalkan saat penerapan.
- Terlalu banyak item yang diminta untuk panggilan BatchWriteItem — batas batch non-transaksional (25).
- Contoh kode: TransactWriteItems di Node.js — transaksi dengan ukuran yang tepat untuk memulai.
- Pelajari: Transaksi DynamoDB · Operasi batch
Referensi
- TransactWriteItems — Referensi Amazon DynamoDB API
- TransactGetItems — Referensi Amazon DynamoDB API
- Transaksi Amazon DynamoDB: Cara kerjanya — Panduan Pengembang Amazon DynamoDB
- BatchWriteItem — Referensi Amazon DynamoDB API
- Kuota layanan, akun, dan tabel di Amazon DynamoDB — Panduan Pengembang Amazon DynamoDB
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.
Direproduksi 26-07-2026 terhadap DynamoDB Lokal 2.x dengan AWS SDK untuk JavaScript v3.1095.0 — keluaran di atas adalah kata demi kata.