AWS CLI ile DynamoDB BatchGetItem

aws dynamodb batch-get-item, tek bir komutta birincil anahtara göre 100'e kadar öğe getirir. Onu komut satırındaki query ve scan'den ayıran iki şey var: anahtarlar, kabuk tırnaklamasından sağ çıkarmanız gereken iç içe DynamoDB JSON'udur ve CLI, UnprocessedKeys'i sizin yerinize boşaltmaz. Sınırlar ve kısmi sonuç kuralları DynamoDB'de toplu işlemler sayfasındadır.

Kod

aws dynamodb batch-get-item \
  --request-items '{
    "Music": {
      "Keys": [
        {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}},
        {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "A Mis Abuelos"}},
        {"Artist": {"S": "Ella Fitzgerald"}, "SongTitle": {"S": "Misty"}}
      ]
    }
  }'

Kısaltılmış hâliyle çıktı, her tabloyu bulunan öğelere artı varsa artakalanlara eşler. Tam birebir çalıştırma sayfanın aşağısındadır:

{
    "Responses": {
        "Music": [
            {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, ...}
        ]
    },
    "UnprocessedKeys": {}
}

Açıklama

  • CLI'nin bu komut için sayfalama mekanizması yoktur. aws dynamodb query help, --starting-token, --max-items ve --page-size seçeneklerini listeler; aws dynamodb batch-get-item help üçünün hiçbirini listelemez. UnprocessedKeys bir sayfalama belirteci değildir ve CLI çağrıyı tek seferlik sayar; dolayısıyla onu boşaltmak bir bayrağın değil, sizin kabuk döngünüzün işidir.
  • Artakalan eşleme zaten girdi biçimindedir. Boş olmayan bir UnprocessedKeys, hiçbir yeniden şekillendirmeye gerek kalmadan doğrudan --request-items olarak geri beslenebilir; bash'te bir while döngüsünü katlanılabilir kılan da budur. Denemeler arasında uyuyun; hemen yeniden çalıştırma aynı kısıtlanmış bölüme çarpar.
  • ProjectionExpression ve ConsistentRead, tablo başına nesnenin içine, "Keys" ile yan yana gider. Bunları --request-items'ın en üst düzeyine koymak buradaki en yaygın biçim hatasıdır.
  • Eşlemeyi bir dosyada tutun. --request-items file://keys.json kabuk tırnaklamasını tamamen aradan çıkarır ve birkaç anahtarı geçtiğinizde tek makul seçenektir. Ayrıca 100 anahtar tavanına fark etmeden çarpmanın da yoludur.

Komutun gerçekte ne yazdırdığı

Yukarıdaki blok, üç şarkının da mevcut olduğu DynamoDB Local 3.3.0'a karşı birebir çalıştırıldı (aws-cli/2.36.9):

{
    "Responses": {
        "Music": [
            {
                "Artist": {"S": "Arturo Sandoval"},
                "AlbumTitle": {"S": "Danzon"},
                "Year": {"N": "1994"},
                "SongTitle": {"S": "A Mis Abuelos"}
            },
            {
                "Artist": {"S": "Ella Fitzgerald"},
                "AlbumTitle": {"S": "Ella in Berlin"},
                "Year": {"N": "1960"},
                "SongTitle": {"S": "Misty"}
            },
            {
                "Artist": {"S": "Arturo Sandoval"},
                "AlbumTitle": {"S": "Danzon"},
                "Year": {"N": "1994"},
                "SongTitle": {"S": "Cubano Chant"}
            }
        ]
    },
    "UnprocessedKeys": {}
}

(Öznitelik eşlemeleri her biri tek satıra katlandı; geri kalan her şey yazdırıldığı gibidir.) Komut önce Cubano Chant'i istedi ve onu en son aldı. Yanıtın hiçbir yanı konumsal değildir; dolayısıyla .Responses.Music[0] indekslemesi yapan bir jq ifadesi, hizmetin canı hangisini önce döndürmek istediyse onu okuyor demektir. Bunun yerine anahtar özniteliklerine göre filtreleyin.

Doğrudan reddettiği iki istek, çıkış durumu 254 ile stderr'e yazdırılır:

aws: [ERROR]: An error occurred (ValidationException) when calling the BatchGetItem operation: Provided list of item keys contains duplicates
aws: [ERROR]: An error occurred (ValidationException) when calling the BatchGetItem operation: Too many items requested for the BatchGetItem call

aws: [ERROR]: öneki CLI v2 sarmalayıcısıdır; ondan sonraki metin hizmetin kendi mesajıdır. Sıfır olmayan her çıkışı kısıtlama sayan bir yeniden deneme döngüsü bunların ikisinde de sonsuza dek döner; dolayısıyla geri çekilmeden önce mesaja göre dallanın.

O iç içe JSON'u tek tırnak içinde elle yazmak, hataların çoğunun kaynağıdır. DynamoDB Expression Builder, tipli anahtar eşlemeleri kurar ve çalıştırmaya hazır bir komut kopyalar; bu da en azından tırnaklamayı şüpheliler listesinden çıkarır.

Bir anahtar kümesini geri okuyup öğeleri JSON gidiş-dönüşü olmadan görmek için DynoTable'ı indirin.

İlgili örnekler

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.