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 aksi Put / 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, dan ValidationError; None menandai 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 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

References

Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.

Bekerja dengan DynamoDB tanpa Console

DynoTable adalah klien desktop yang cepat untuk DynamoDB — jelajahi tabel, jalankan query gaya SQL, dan edit Item secara lokal.