Aggregated size of all range keys has exceeded the size limit of 1024 bytes
TL;DR — DynamoDB 把排序(range)键值限制在 1024 字节,把分区(hash)键值限制在 2048 字节(以 UTF-8 编码测量)。你的排序键值越过了 1024 字节——通常是一个塞得过满的复合键。缩短它、对长的部分做哈希,或者把大块移入一个非键属性。
含义
ValidationException: One or more parameter values were invalid: Aggregated size of all range keys has exceeded the size limit of 1024 bytes
# on DynamoDB Local you get one combined sentence instead, naming neither key:
ValidationException: Hash primary key values must be under 2048 bytes, and range primary key values must be under 1024 bytes这是一个硬性的键大小限制,与 400 KB 的项目限制无关。排序键的值(以 UTF-8 字节测量)最多 1024 字节;分区键的值最多 2048 字节。越过它,写入就会被以一个 HTTP 400 ValidationException 拒绝——一个在键变小之前不可重试的请求错误。
为什么会发生
- 过长的复合排序键——把许多段连接起来(
ORG#…#PROJECT#…#DOC#…#veryLongTitle…)直到值超过 1024 字节。 - 把一个大的值编码进键——把完整的 URL、路径、描述或序列化的二进制块放进排序键。
- 多字节字符——非 ASCII 文本在 UTF-8 中每个占 2–4 字节,因此一个"看起来短"的字符串可能超过字节限制。
- 分区键太大——针对 2048 字节 hash 键限制的同一类错误。
如何修复
- 把复合键裁剪到你实际查询的那些段;去掉人类可读的填充物。
- 对长的部分做哈希——在键中存储一个短的确定性摘要(例如一个截断的 SHA-256),把完整的值作为一个普通属性保留。
- 把大块移出键——排序键应该标识/排序项目,而不是携带它的载荷;把长文本放进一个非键属性(它享有 400 KB 的项目预算)。
- 以字节而非字符测量——UTF-8 编码并计数,尤其是对非 ASCII 数据。
在 DynoTable 中查看
将草稿项粘贴到 item size calculator 中,并在写入之前检查关键属性字节计数。在 DynoTable 中,使用 ⌘K 打开表,使用暂存 (⌘S) 创建一个测试项,并确认键适合 — 过大的键在提交之前会失败。重新设计复合键时,在Query Builder中使用较短的键段进行原型查询。使用 ⌘P 切换配置文件; 在“设置”→“配置文件”上测试连接。参见连接 AWS和安装。
来源
- Supported data types and naming rules(2026-07-13 验证)
- BatchWriteItem — Amazon DynamoDB API Reference(2026-07-13 验证)
相关错误
- Item size has exceeded the maximum allowed size (400 KB)——整个项目(而不只是键)太大。
- The provided key element does not match the schema——一个键的类型/形态不匹配。
- 学习:DynamoDB item size limit
参考资料
- Supported data types and naming rules in Amazon DynamoDB — Developer Guide
- BatchWriteItem — Amazon DynamoDB API Reference (key length limits)
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。