DynamoDB UpdateItem dengan AWS CLI
Lima argumen, tiga di antaranya DynamoDB JSON, semuanya beradu dengan shell Anda: itulah yang membuat aws dynamodb update-item merepotkan, bukan update-nya sendiri. Yang ditambahkan CLI di atas setiap client lain adalah satu tempat kedua di mana request bisa ditolak, dan sekumpulan kode keluar yang cukup presisi untuk memberi tahu Anda yang mana penyebabnya.
Kode
aws dynamodb update-item \
--table-name 'Music' \
--key '{"Artist":{"S":"Arturo Sandoval"},"SongTitle":{"S":"Cubano Chant"}}' \
--update-expression 'SET #upd0 = :updValue0, #upd1 = :updValue1 ADD #upd2 :updValue2' \
--expression-attribute-names '{"#upd0":"Genre","#upd1":"Year","#upd2":"Awards"}' \
--expression-attribute-values '{":updValue0":{"S":"Latin Jazz"},":updValue1":{"N":"1994"},":updValue2":{"N":"1"}}' \
--return-values ALL_NEWDijalankan terhadap item yang tak punya Genre maupun Awards, perintah itu mencetak:
{
"Attributes": {
"Artist": {
"S": "Arturo Sandoval"
},
"Awards": {
"N": "1"
},
"Genre": {
"S": "Latin Jazz"
},
"Year": {
"N": "1994"
},
"SongTitle": {
"S": "Cubano Chant"
}
}
}ADD pada Awards yang belum ada memulainya dari nol, dan atribut-atributnya kembali dalam urutan milik layanan alih-alih urutan yang ditulis expression-nya. Jangan salurkan ini ke apa pun yang bergantung pada posisi.
Penjelasan
--key— primary key lengkap, dalam DynamoDB JSON. Lewatkan hanya partition key dari tabel berkunci komposit dan Anda mendapatValidationException: The number of conditions on the keys is invalid, bukan kecocokan sebagian.--update-expression— klausaSET,ADD,REMOVEdanDELETE, diberi alias lewat--expression-attribute-names.ADD #upd2 :updValue2di sini adalah increment atomik padaAwards; tata bahasa klausanya lengkap ada di update expression.Angka adalah string ber-quote, dan CLI memeriksanya sebelum DynamoDB. Tulis
{"N":1994}alih-alih{"N":"1994"}dan tak ada yang meninggalkan mesin Anda:aws: [ERROR]: An error occurred (ParamValidation): Parameter validation failed: Invalid type for parameter ExpressionAttributeValues.:y.N, value: 1994, type: <class 'int'>, valid types: <class 'str'>Kode keluarnya memberi tahu separuh mana yang gagal. Penolakan sisi klien itu keluar dengan 252. Request yang benar-benar dijawab dan ditolak DynamoDB keluar dengan 254:
aws: [ERROR]: An error occurred (ValidationException) when calling the UpdateItem operation: Invalid UpdateExpression: Attribute name is a reserved keyword; reserved keyword: YearKode 252 selalu berarti bug di JSON Anda. Kode 254 bisa jadi kondisi yang memang sengaja Anda harapkan gagal, jadi skrip sebaiknya bercabang berdasarkan keduanya alih-alih berdasarkan "bukan nol".
Tanpa
--return-values, perintah itu sama sekali tidak mencetak apa pun dan keluar dengan status 0. Tak ada baris "1 item updated" untuk di-grep, jadi keheningan berarti sukses.UPDATED_NEWhanya mengembalikan atribut yang disentuh expression-nya, yang merupakan opsi murah saat Anda cuma butuh nilai counter yang baru.Quote sekali, lalu pakai berkas. Pakai kutip tunggal untuk setiap argumen JSON supaya shell membiarkan
"dan$apa adanya, dan pindahkan apa pun yang panjang ke--expression-attribute-values file://values.jsonalih-alih meng-escape-nya dua kali.Semantik upsert —
update-itemmembuat item-nya ketika key-nya tak ada, dan begitulahAwardsmuncul di atas. Tambahkan--condition-expression "attribute_exists(Artist)"untuk membuatnya hanya-memperbarui.
Tak ada di sini yang membangun expression-nya untuk Anda
Dari lima client yang didokumentasikan di situs ini, tepat satu yang akan menghasilkan sebuah UpdateExpression: paket expression milik SDK Go. Node, Python dan Java semuanya menyerahkan string-nya untuk Anda tulis. CLI adalah kasus terburuk dari keempatnya, karena Anda juga menulis sendiri kedua map alias dan DynamoDB JSON-nya, di dalam shell yang ingin menafsirkan karakter yang sama.
DynamoDB Expression Builder menutup celah itu: rakit klausanya di browser, salin perintah aws dynamodb update-item yang sudah ter-quote dan siap pakai. Untuk melakukan suntingan yang sama terhadap tabel sungguhan tanpa meng-escape satu pun kutip, unduh DynoTable.
Panduan terkait
- Update expression DynamoDB —
SET,ADD,REMOVE,DELETE, dan idiomnya. - Memahami ReturnValues — apa yang diberikan setiap opsi
--return-values. - "Attribute name is a reserved keyword" — mengapa map alias di sini tidak opsional.
- Error sintaks "Invalid UpdateExpression" — kesalahan sintaks SET/ADD yang umum, diurai.
Referensi
- UpdateItem — Amazon DynamoDB API Reference
- update-item — AWS CLI Command Reference
- Update expressions — Amazon DynamoDB Developer Guide
Terakhir diverifikasi 2026-07-28 terhadap dokumentasi resmi AWS yang ditautkan di atas.