使用 AWS CLI 執行 DynamoDB BatchGetItem
aws dynamodb batch-get-item 在單一指令中依 primary key 抓取多達 100 個項目(上限 16 MB)。key 放在 --request-items 中,格式為表格 → keys 的 map,以 DynamoDB JSON 表示 — 而你必須檢查輸出中的 UnprocessedKeys,因為一次批次合法地可能只回傳你所要求的一部分。
Code
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"}}
]
}
}'輸出將每個表格對應到找到的項目,加上任何剩餘部分:
{
"Responses": {
"Music": [
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, ...}
]
},
"UnprocessedKeys": {}
}說明
--request-items— 表格名稱 →{"Keys": [...]}的 map;一個指令可橫跨多個表格。每個 key 都必須是完整 primary key(composite key 需 partition + sort)。超過 100 個 key,或同一個 key 出現兩次,都會以ValidationException失敗。Responses— 項目以沒有特定順序回傳,不存在的 key 就是不會出現 — 請以 key 屬性把結果對應回請求。UnprocessedKeys— 與query/scan不同,CLI 不會自動重試部分批次(它不是分頁 token)。若這個 map 非空 — 節流、超過 16 MB 的回應 — 請以那個完全相同的 map 作為--request-items重跑指令(它已經是正確的形狀),並在嘗試之間退避。- 每個表格可加上
"ProjectionExpression": "..."(搭配"ExpressionAttributeNames")只抓取部分屬性,並加上"ConsistentRead": true取得強一致讀取 — 批次讀取預設為最終一致。 - 提示:若 key 不止幾個,把 map 放進檔案並以
--request-items file://keys.json傳入。
改用視覺化操作
在 shell 引號中手寫巢狀 DynamoDB JSON 容易出錯。DynamoDB Expression Builder 會建立帶型別的 key/value map 並複製可直接執行的 CLI 指令。
想在 GUI 中跨表格抓取並檢視項目 — 不需 JSON 跳脫、不需重跑記帳 — 下載 DynoTable。
相關範例
- 在 Node.js 中使用 DynamoDB BatchGetItem — 以 AWS SDK v3 執行相同的批次讀取。
- 在 Python 中使用 DynamoDB BatchGetItem — 以 boto3 執行相同的批次讀取。
- 使用 AWS CLI 執行 DynamoDB GetItem — 這個批次所批的單一項目讀取。
- DynamoDB 的批次操作 — 上限、部分失敗,以及何時批次划算。
- "Too many items requested for the BatchGetItem call" — 一個請求中超過 100 個 key。
- "Provided list of item keys contains duplicates" — 同一個 key 在一次批次中出現兩次。
References
- BatchGetItem — Amazon DynamoDB API Reference
- batch-get-item — AWS CLI Command Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。