Ukuran ekspresi telah melampaui ukuran maksimum yang diperbolehkan
TL;DR — DynamoDB membatasi string ekspresi tunggal apa pun hingga 4 KB (parameter ekspresi: UpdateExpression, ConditionExpression, FilterExpression, ProjectionExpression). Anda sudah melewatinya — biasanya pembaruan yang dibuat secara otomatis pada item besar, atau filter IN (…) / OR raksasa. Kecilkan ekspresinya, bukan itemnya.
Apa artinya
ValidationException: 1 validation error detected: Invalid ConditionExpression: Expression size has exceeded the maximum allowed size; expression size: 27785Batas 4 KB terletak pada panjang string ekspresi itu sendiri, tidak bergantung pada ukuran item 400 KB. Item yang berukuran di bawah 400 KB masih dapat melebihi anggaran ekspresi jika SDK membuat satu klausa per atribut (nama placeholder yang panjang bertambah dengan cepat). Ini adalah HTTP 400 ValidationException — tidak dapat dicoba ulang tanpa mengubah ekspresi.
Anggaran ekspresi memiliki saudara kandung yang dapat Anda tekan terlebih dahulu: setiap placeholder #name/:value dibatasi pada 255 byte, gabungan ExpressionAttributeNames + ExpressionAttributeValues pada 2 MB, satu ekspresi pada 300 operator/functions, dan pembanding IN pada 100 operan.
Mengapa itu terjadi
UpdateExpressionyang dibuat secara otomatis pada item yang luas — ORM/mapper memancarkanSET #a0 = :v0, #a1 = :v1, …untuk setiap atribut, dan nama placeholder + pemisah melintasi 4 KB.FilterExpressionbesar —attr IN (:0, :1, …)panjang atau rangkaian kondisiOR.- Penulisan bersyarat massal dengan banyak
attribute_not_exists/comparisons dalam satuConditionExpression. - Pengeditan konsol item besar — menyimpan item besar akan memancarkan kembali ekspresi update/condition yang besar.
Bagaimana cara memperbaikinya
- Hanya perbarui apa yang berubah. Bangun
UpdateExpressiondari perbedaan, bukan keseluruhan item — sebagian besar pembaruan menyentuh beberapa atribut. - Mempersingkat nama placeholder.
#a/:vmengalahkan nama deskriptif yang panjang; panjang yang diperhitungkan adalah string ekspresi, jadi nama terser membeli ruang kepala yang sebenarnya. - Pisahkan filter raksasa menjadi kueri yang lebih sempit, atau atur ulang sehingga filter tidak diperlukan (key/index yang lebih baik berarti kondisi
ORyang lebih sedikit). - Pisahkan satu penulisan berukuran besar menjadi beberapa pembaruan yang lebih kecil, atau buat model item sehingga satu perubahan logis tidak menulis ulang semuanya.
- Kurangi penumpukan — jalur peta yang sangat bersarang meningkatkan panjang ekspresi; ratakan sedapat mungkin.
- Batas daftar
INpada 100 operan. Itu adalah batas terdokumentasi terpisah yang bisa gagal sebelum batas string 4 KB.
Dari DynoTable
DynoTable membuat ekspresi pembaruan dari bidang yang sebenarnya Anda ubah — tidak semua atribut pada item — menjaga ekspresi tetap di bawah 4 KB. Buka item dengan ⌘K, edit bidang tertentu, dan salin panjang string ekspresi yang dihasilkan.
Gunakan Pembuat Ekspresi untuk melihat ukuran ekspresi saat Anda menambahkan klausa. Kalkulator ukuran item membantu saat item berukuran besar mendorong pembaruan yang dibuat secara otomatis. Ganti profil dengan ⌘P; lihat Menghubungkan ke AWS dan Instal.
Sumber
- Kendala di Amazon DynamoDB (diverifikasi 13-07-2026)
- Menggunakan ekspresi pembaruan di DynamoDB (diverifikasi 13-07-2026)
Kesalahan terkait
- Ukuran item melebihi maksimum (400 KB) — item, bukan ekspresinya, terlalu besar.
- Kata kunci yang dicadangkan dalam nama atribut — alasan Anda memerlukan placeholder.
- Pelajari: Perbarui ekspresi · Strategi pemfilteran
Referensi
- Kendala di Amazon DynamoDB — Panduan Pengembang Amazon DynamoDB
- Menggunakan ekspresi pembaruan di DynamoDB — Panduan Pengembang Amazon DynamoDB
- Penanganan kesalahan dengan DynamoDB — Panduan Pengembang Amazon DynamoDB
Terakhir diverifikasi 13-07-2026 terhadap dokumentasi resmi AWS yang ditautkan di atas.