使用 AWS CLI 的 DynamoDB BatchGetItem
aws dynamodb batch-get-item 在一条命令中按主键获取多达 100 个项目(上限 16 MB)。这些键以 DynamoDB JSON 形式放入 --request-items,构成一个表 → 键的映射——而且你必须检查输出中的 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": [...]}的映射;一条命令可以跨多张表。每个键都必须是完整主键(复合键则为分区键 + 排序键)。超过 100 个键,或同一个键出现两次,都会以ValidationException失败。Responses— 项目返回时没有特定顺序,不存在的键则根本不会出现——请根据键属性把结果与请求对应起来。UnprocessedKeys— 与query/scan不同,CLI 不会自动重试部分完成的批次(它不是分页令牌)。如果该映射非空——限流、响应超过 16 MB——就用那个原样的映射作为--request-items重新运行命令(它已经是正确的格式),并在两次尝试之间进行退避。- 每张表可以额外加上
"ProjectionExpression": "..."(配合"ExpressionAttributeNames")只获取部分属性,以及"ConsistentRead": true进行强一致性读取——批量读取默认是最终一致性的。 - 提示:如果键不止几个,把映射放进文件并用
--request-items file://keys.json传入。
可视化操作
在 shell 引号里手写嵌套的 DynamoDB JSON 很容易出错。DynamoDB Expression Builder 会构建带类型的键/值映射,并复制可直接运行的 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 个键。
- "Provided list of item keys contains duplicates" — 同一批次中同一个键出现两次。
References
- BatchGetItem — Amazon DynamoDB API Reference
- batch-get-item — AWS CLI Command Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Last verified 2026-07-13 against the official AWS documentation linked above.