AWS CLI ile DynamoDB BatchWriteItem
aws dynamodb batch-write-item, tek bir komutta 25'e kadar öğe ekler veya siler (toplam 16 MB, öğe başına 400 KB). Yazmalar --request-items içinde tablo → PutRequest/DeleteRequest girdileri eşlemesi olarak DynamoDB JSON biçiminde yer alır — ve çıktıdaki UnprocessedItems'ı kontrol etmelisiniz, çünkü toplu istek bir bütün olarak atomik değildir.
Code
aws dynamodb batch-write-item \
--request-items '{
"Music": [
{"PutRequest": {"Item": {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, "AlbumTitle": {"S": "Danzon"}, "Year": {"N": "1994"}}}},
{"PutRequest": {"Item": {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "A Mis Abuelos"}, "AlbumTitle": {"S": "Danzon"}, "Year": {"N": "1994"}}}},
{"DeleteRequest": {"Key": {"Artist": {"S": "Ella Fitzgerald"}, "SongTitle": {"S": "Misty"}}}}
]
}'Her şey yerine oturduğunda, çıktının kalan eşlemesi boştur:
{
"UnprocessedItems": {}
}Açıklama
--request-items— tablo adı → en fazla 25PutRequest/DeleteRequestgirdisinden oluşan bir dizi şeklinde bir eşleme (bir komut birden çok tabloya yayılabilir). HerPutRequest.Itemtam birincil anahtara ihtiyaç duyar; herDeleteRequest.Keyyalnızca anahtardır. Değerler DynamoDB JSON'dur — sayılarNaltında dizedir.- Bir işlem değildir — her put/delete tek tek atomiktir, ancak toplu istek bir bütün olarak değildir. Ya hep ya hiç mi gerekiyor?
transact-write-items'ı kullanın. UnprocessedItems— CLI, kısmi bir toplu isteği otomatik olarak yeniden denemez. Eşleme boş değilse (genellikle kısıtlama nedeniyle), komutu tam olarak o eşlemeyle--request-itemsolarak yeniden çalıştırın — zaten doğru biçimde — denemeler arasında geri çekilerek.- Güncelleme yok, koşul yok —
batch-write-item,update-item,--condition-expressionveya--return-valuesifade edemez; mevcut bir anahtara yapılan bir put, öğenin tamamının sessizce yerine geçer. Yinelenen anahtarlar, aynı öğede put+delete, 25'ten fazla istek, 400 KB'ı aşan bir öğe ya da toplamda 16 MB'ı aşma; her biri DynamoDB'nin toplu isteğin tamamını reddetmesine neden olur. - İpucu: eşlemeyi bir dosyada tutun ve
--request-items file://writes.jsonolarak geçirin — 25 öğeyi satır içinde kabuk tırnaklamak ıstıraptır.
Görsel olarak yapın
İç içe DynamoDB JSON'unu kabuk tırnakları içinde elle yazmak hataya açıktır. DynamoDB Expression Builder, türlü değer eşlemeleri oluşturur ve çalıştırmaya hazır CLI komutlarını kopyalar; öğe boyutu hesaplayıcı ise her öğeyi 400 KB üst sınırına karşı kontrol eder.
Öğeleri bir grafik arayüzde (GUI) toplu eklemek, düzenlemek ve silmek için — JSON kaçışı yerine CSV/JSON içe aktarma — DynoTable'ı indirin.
İlgili örnekler
- Node.js'te DynamoDB BatchWriteItem — AWS SDK v3 ile aynı toplu yazma.
- Python'da DynamoDB toplu yazma — boto3'ün
batch_writer()'ı yeniden deneme döngüsünü sizin için yapar. - AWS CLI ile DynamoDB PutItem — bunun toplu hâle getirdiği tek öğe yazması.
- DynamoDB'de toplu işlemler — sınırlar, kısmi başarısızlık ve toplu işlemenin ne zaman kazandırdığı.
- "Too many items requested for the BatchWriteItem call" — bir toplu istekte 25'ten fazla put/delete isteği.
- "Provided list of item keys contains duplicates" — bir toplu istekte aynı anahtara dokunan iki istek.
References
- BatchWriteItem — Amazon DynamoDB API Reference
- batch-write-item — AWS CLI Command Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.