AWS CLI ile DynamoDB TransactWriteItems

aws dynamodb transact-write-items, 100'e kadar yazmayı tek bir ya hep ya hiç işleminde gruplar — ya her eylem işlenir ya da hiçbiri işlenmez. Eylemler --transact-items içinde, her biri isteğe bağlı bir koşula sahip Put, Update, Delete ve ConditionCheck'i karıştıran bir JSON dizisi olarak yer alır.

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"}}
      }
    }
  ]'

Başarı durumunda komut hiçbir şey yazdırmaz ve 0 ile çıkar. Herhangi bir koşul başarısız olursa işlemin tamamı iptal olur:

An error occurred (TransactionCanceledException) when calling the TransactWriteItems
operation: Transaction cancelled, please refer cancellation reasons for specific
reasons [ConditionalCheckFailed, None]

Açıklama

  • --transact-items — en fazla 100 Put / Update / Delete / ConditionCheck eylemi, toplamda 4 MB, DynamoDB JSON'daki değerler. Eylemler tablolara yayılabilir (aynı hesap + Bölge), ancak hiçbir iki eylem aynı öğeyi hedefleyemez — bu tek başına işlemi iptal eder.
  • İptal nedenleri hata iletisinde eylem sırasıyla yer alır — kodlar ConditionalCheckFailed, TransactionConflict (başka bir işlem ilerleme sırasında bir öğeye dokundu — yeniden çalıştırmak güvenli), ProvisionedThroughputExceeded ve ValidationError içerir; None, masum eylemleri işaretler. Burada ilk güncellemenin koşulu (Awards >= 1) başarısız oldu; ikinci eylem sorunsuzdu.
  • ConditionCheck — işlemin değiştirmediği bir öğe üzerinde bir koşul öne sürer ve başarısız olursa işlemin tamamını veto eder.
  • --client-request-token — yeniden çalıştırmaları 10 dakika boyunca idempotent yapmak için sabit bir belirteç geçirin; bir zaman aşımından sonra tam komutu yeniden çalıştırmak böylece yazmaları iki kez uygulayamaz.
  • Maliyet — işlemsel yazmalar, düz yazmaların kabaca WCU'sunu faturalandırır (hazırla + işle). Tek bir öğede atomiklik için bir koşullu yazma daha ucuz araçtır.
  • İpucu: eylem dizisini bir dosyada tutun ve --transact-items file://transaction.json olarak geçirin.

Görsel olarak yapın

Her eylemin içindeki koşul ve güncelleme ifadeleri zahmetli kısımdır — DynamoDB Expression Builder bunları ad/değer eşlemeleriyle bir araya getirir ve çalıştırmaya hazır komutları kopyalar.

Öğeleri düzenlemek ve üretilen ifadeleri bir grafik arayüzde (GUI) gözden geçirmek için — DynoTable'ı indirin.

İlgili örnekler

References

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

Console olmadan DynamoDB ile çalışın

DynoTable, DynamoDB için hızlı bir masaüstü istemcisidir — tablolara göz atın, SQL tarzı sorgular çalıştırın ve item'ları yerel olarak düzenleyin.