使用 AWS CLI 的 DynamoDB BatchWriteItem
aws dynamodb batch-write-item 在一条命令中写入或删除多达 25 个项目(合计 16 MB,每项 400 KB)。这些写入以 DynamoDB JSON 形式放入 --request-items,构成一个表 → PutRequest/DeleteRequest 条目的映射——而且你必须检查输出中的 UnprocessedItems,因为整个批次并非原子操作。
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"}}}}
]
}'当一切写入成功时,输出中的剩余项映射为空:
{
"UnprocessedItems": {}
}说明
--request-items— 一个表名 → 至多 25 个PutRequest/DeleteRequest条目数组的映射(一条命令可以跨多张表)。每个PutRequest.Item需要完整主键;每个DeleteRequest.Key只需键即可。值采用 DynamoDB JSON——数字在N下以字符串形式表示。- 不是事务 — 每个 put/delete 单独看是原子的,但整个批次不是。需要全有或全无?请使用
transact-write-items。 UnprocessedItems— CLI 不会自动重试部分完成的批次。如果该映射非空(通常是限流所致),就用那个原样的映射作为--request-items重新运行命令——它已经是正确的格式——并在两次尝试之间进行退避。- 无更新、无条件 —
batch-write-item无法表达update-item、--condition-expression或--return-values;对已存在键的 put 会静默地替换整个项目。重复键、对同一项目同时 put+delete、超过 25 个请求、单项超过 400 KB,或合计超过 16 MB,都会导致 DynamoDB 拒绝整个批次。 - 提示:把映射放进文件并用
--request-items file://writes.json传入——内联对 25 个项目做 shell 引号转义会让人痛苦。
可视化操作
在 shell 引号里手写嵌套的 DynamoDB JSON 很容易出错。DynamoDB Expression Builder 会构建带类型的值映射并复制可直接运行的 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" — 一个批次中两个请求触及同一个键。
References
- BatchWriteItem — Amazon DynamoDB API Reference
- batch-write-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.