AWS CLI ile DynamoDB UpdateItem

Beş argüman, bunların üçü DynamoDB JSON ve hepsi kabuğunuzla boğuşuyor: aws dynamodb update-item'ı zahmetli kılan budur, güncellemenin kendisi değil. CLI'ın diğer her istemcinin üstüne kattığı şey, isteğin reddedilebileceği ikinci bir yer ve hangisi olduğunu size söyleyecek kadar kesin bir çıkış kodu kümesidir.

Kod

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_NEW

Ne Genre ne de Awards içeren bir öğeye karşı çalıştırıldığında o komut şunu yazdırır:

{
    "Attributes": {
        "Artist": {
            "S": "Arturo Sandoval"
        },
        "Awards": {
            "N": "1"
        },
        "Genre": {
            "S": "Latin Jazz"
        },
        "Year": {
            "N": "1994"
        },
        "SongTitle": {
            "S": "Cubano Chant"
        }
    }
}

Yok olan bir Awards üzerindeki ADD onu sıfırdan başlattı ve öznitelikler, ifadenin onları yazdığı sıra yerine hizmetin sırasıyla geri geldi. Bunu konuma dayalı hiçbir şeye boruyla vermeyin.

Açıklama

  • --key — DynamoDB JSON olarak tam birincil anahtar. Bileşik anahtarlı bir tablonun yalnızca bölüm anahtarını geçirin, kısmi bir eşleşme değil ValidationException: The number of conditions on the keys is invalid alırsınız.

  • --update-expression--expression-attribute-names üzerinden takma adlandırılmış SET, ADD, REMOVE ve DELETE yan tümceleri. Buradaki ADD #upd2 :updValue2, Awards üzerinde atomik bir artırmadır; tam yan tümce grameri güncelleme ifadeleri içindedir.

  • Sayılar tırnaklanmış dizelerdir ve CLI bunu DynamoDB'den önce denetler. {"N":"1994"} yerine {"N":1994} yazın; makinenizden hiçbir şey ayrılmaz:

    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'>
  • Çıkış kodu size hangi yarının başarısız olduğunu söyler. O istemci tarafı reddi 252 ile çıkar. DynamoDB'nin gerçekten yanıtlayıp reddettiği bir istek ise 254 ile çıkar:

    aws: [ERROR]: An error occurred (ValidationException) when calling the UpdateItem operation: Invalid UpdateExpression: Attribute name is a reserved keyword; reserved keyword: Year

    252 her zaman JSON'ınızdaki bir hatadır. 254 ise bilinçli olarak başarısız olmasını beklediğiniz bir koşul olabilir, dolayısıyla betikler sıfırdan farklı olma üzerinden değil bu ikisi üzerinden dallanmalıdır.

  • --return-values olmadan komut hiçbir şey yazdırmaz ve 0 ile çıkar. grep'leyecek bir "1 öğe güncellendi" satırı yoktur, dolayısıyla sessizlik başarıdır. UPDATED_NEW yalnızca ifadenin dokunduğu öznitelikleri döndürür; yalnızca yeni sayaç değerine ihtiyacınız olduğunda ucuz seçenek budur.

  • Bir kez tırnaklayın, sonra bir dosya kullanın. Kabuk " ve $'a dokunmasın diye her JSON argümanını tek tırnak içine alın ve uzun olan her şeyi iki kez kaçış karakteriyle uğraşmak yerine --expression-attribute-values file://values.json içine taşıyın.

  • Upsert anlamıupdate-item, anahtar yoksa öğeyi oluşturur; Awards'ın yukarıda böyle belirmesinin nedeni budur. Yalnızca-güncelle yapmak için --condition-expression "attribute_exists(Artist)" ekleyin.

Burada hiçbir şey ifadeyi sizin yerinize oluşturmuyor

Bu sitede belgelenen beş istemciden tam olarak biri bir UpdateExpression üretir: Go SDK'sının expression paketi. Node, Python ve Java'nın hepsi dizeyi size yazdırır. CLI, dördü arasında en kötü durumdur, çünkü aynı karakterleri yorumlamak isteyen bir kabuğun içinde hem iki takma ad haritasını hem de DynamoDB JSON'ı elle yazıyorsunuz.

DynamoDB Expression Builder o boşluğu kapatır: yan tümceleri tarayıcıda birleştirin, hazır tırnaklanmış bir aws dynamodb update-item komutunu kopyalayın. Aynı düzenlemeyi tek bir tırnak kaçırmadan gerçek bir tabloya karşı yapmak için DynoTable'ı indirin.

İlgili kılavuzlar

Kaynaklar

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

Console olmadan DynamoDB ile çalış

DynamoDB’nin çalıştıramadığı gerçek SQL’i çalıştıran hızlı bir DynamoDB masaüstü istemcisi — JOINs, GROUP BY, toplamalar — görsel düzenleme ve kendi Bedrock anahtarların üzerinde bir yapay zekâ aracısıyla.

30 günlük ücretsiz deneme, kredi kartı yok — ardından süre sınırı olmayan Ücretsiz plan.