使用 AWS CLI 執行 DynamoDB BatchWriteItem
aws dynamodb batch-write-item 在單一指令中 put 或 delete 多達 25 個項目(合計 16 MB,每個項目 400 KB)。寫入放在 --request-items 中,格式為表格 → PutRequest/DeleteRequest 項目的 map,以 DynamoDB JSON 表示 — 而你必須檢查輸出中的 UnprocessedItems,因為整個批次並非 atomic。
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"}}}}
]
}'當一切都寫入時,輸出的剩餘 map 為空:
{
"UnprocessedItems": {}
}說明
--request-items— 表格名稱 → 多達 25 個PutRequest/DeleteRequest項目陣列的 map(一個指令可橫跨多個表格)。每個PutRequest.Item需要完整的 primary key;每個DeleteRequest.Key只需 key。值為 DynamoDB JSON — 數字在N下以字串表示。- 不是交易 — 每個 put/delete 各自是 atomic,但整個批次不是。需要全有或全無?請用
transact-write-items。 UnprocessedItems— CLI 不會自動重試部分批次。若這個 map 非空(通常是節流所致),請以那個完全相同的 map 作為--request-items重跑指令 — 它已經是正確的形狀 — 並在嘗試之間退避。- 不支援更新、不支援條件 —
batch-write-item無法表達update-item、--condition-expression或--return-values;對既有 key 的 put 會靜默取代整個項目。重複的 key、對同一項目同時 put+delete、超過 25 個請求、超過 400 KB 的項目,或合計超過 16 MB,都會讓 DynamoDB 拒絕整個批次。 - 提示:把 map 放進檔案並以
--request-items file://writes.json傳入 — 在行內以 shell 引號處理 25 個項目是折磨。
改用視覺化操作
在 shell 引號中手寫巢狀 DynamoDB JSON 容易出錯。DynamoDB Expression Builder 會建立帶型別的 value map 並複製可直接執行的 CLI 指令,而 項目大小計算機 會對照 400 KB 上限檢查每個項目。
想在 GUI 中大量新增、編輯與刪除項目 — 以 CSV/JSON 匯入取代 JSON 跳脫 — 下載 DynoTable。
相關範例
- 在 Node.js 中使用 DynamoDB BatchWriteItem — 以 AWS SDK v3 執行相同的批次寫入。
- 在 Python 中執行 DynamoDB 批次寫入 — boto3 的
batch_writer()幫你處理重試迴圈。 - 使用 AWS CLI 執行 DynamoDB PutItem — 這個批次所批的單一項目寫入。
- DynamoDB 的批次操作 — 上限、部分失敗,以及何時批次划算。
- "Too many items requested for the BatchWriteItem call" — 一次批次中超過 25 個 put/delete 請求。
- "Provided list of item keys contains duplicates" — 一次批次中有兩個請求觸及同一個 key。
References
- BatchWriteItem — Amazon DynamoDB API Reference
- batch-write-item — AWS CLI Command Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。