DynamoDB TransactWriteItems dengan AWS CLI
aws dynamodb transact-write-items mengelompokkan hingga 100 penulisan ke dalam satu operasi all-or-nothing — entah setiap aksi commit, atau tidak ada yang commit. Aksi-aksinya masuk ke --transact-items sebagai array JSON yang mencampur Put, Update, Delete, dan ConditionCheck, masing-masing dengan kondisi opsional.
Code
aws dynamodb transact-write-items \
--transact-items '[
{
"Update": {
"TableName": "Music",
"Key": {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}},
"UpdateExpression": "SET #upd0 = #upd0 - :one",
"ConditionExpression": "#upd0 >= :one",
"ExpressionAttributeNames": {"#upd0": "Awards"},
"ExpressionAttributeValues": {":one": {"N": "1"}}
}
},
{
"Update": {
"TableName": "Music",
"Key": {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "A Mis Abuelos"}},
"UpdateExpression": "SET #upd0 = if_not_exists(#upd0, :zero) + :one",
"ExpressionAttributeNames": {"#upd0": "Awards"},
"ExpressionAttributeValues": {":one": {"N": "1"}, ":zero": {"N": "0"}}
}
}
]'Pada keberhasilan perintah tidak mencetak apa pun dan keluar 0. Jika ada kondisi yang gagal, seluruh transaksi dibatalkan:
An error occurred (TransactionCanceledException) when calling the TransactWriteItems
operation: Transaction cancelled, please refer cancellation reasons for specific
reasons [ConditionalCheckFailed, None]Penjelasan
--transact-items— hingga 100 aksiPut/Update/Delete/ConditionCheck, agregat 4 MB, nilai dalam DynamoDB JSON. Aksi bisa mencakup beberapa tabel (akun + Region yang sama), tetapi tidak boleh ada dua aksi yang menargetkan item yang sama — itu saja membatalkan transaksi.- Cancellation reason menumpang di pesan error dalam urutan aksi — kode mencakup
ConditionalCheckFailed,TransactionConflict(transaksi lain menyentuh sebuah item di tengah jalan — aman untuk dijalankan ulang),ProvisionedThroughputExceeded, danValidationError;Nonemenandai aksi yang tidak bersalah. Di sini kondisi update pertama (Awards >= 1) gagal; aksi kedua baik-baik saja. ConditionCheck— menegaskan sebuah kondisi pada item yang tidak dimodifikasi transaksi dan memveto seluruh transaksi jika gagal.--client-request-token— lewatkan token tetap untuk membuat pengulangan idempotent selama 10 menit; menjalankan ulang perintah persis setelah timeout kemudian tidak bisa menerapkan penulisan dua kali.- Biaya — penulisan transaksional menagih kira-kira 2× WCU dari penulisan biasa (prepare + commit). Untuk atomisitas pada satu item, sebuah penulisan bersyarat adalah alat yang lebih murah.
- Tip: simpan array aksi di sebuah file dan lewatkan
--transact-items file://transaction.json.
Lakukan secara visual
Condition dan update expression di dalam setiap aksi adalah bagian yang rumit — DynamoDB Expression Builder merakitnya dengan map name/value dan menyalin perintah yang siap dijalankan.
Untuk mengedit item dan meninjau expression yang dihasilkan dalam GUI — unduh DynoTable.
Contoh terkait
- DynamoDB TransactWriteItems di Node.js — transaksi yang sama dengan AWS SDK v3.
- DynamoDB TransactWriteItems di Python — transaksi yang sama dengan boto3.
- DynamoDB BatchWriteItem dengan AWS CLI — penulisan massal ketika Anda tidak butuh atomisitas.
- Transaksi DynamoDB — isolasi, idempotensi, dan kapan transaksi sepadan.
- DynamoDB TransactionCanceledException — setiap kode cancellation-reason, diuraikan.
- "Too many actions in a TransactWriteItems call" — batas 100-aksi dan 4 MB transaksi.
- "Transaction request cannot include multiple operations on one item" — satu aksi per item, per transaksi.
References
- TransactWriteItems — Amazon DynamoDB API Reference
- transact-write-items — AWS CLI Command Reference
- Amazon DynamoDB transactions: how it works — Amazon DynamoDB Developer Guide
- DynamoDB read and write operations (capacity unit consumption) — Amazon DynamoDB Developer Guide
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.