使用 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

相關範例

References

最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。

不必透過主控台就能操作 DynamoDB

DynoTable 是一款快速的 DynamoDB 桌面用戶端 — 瀏覽表格、執行 SQL 風格的查詢,並在本機編輯項目。