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 键限制的同一类错误。

如何修复

  1. 把复合键裁剪到你实际查询的那些段;去掉人类可读的填充物。
  2. 对长的部分做哈希——在键中存储一个短的确定性摘要(例如一个截断的 SHA-256),把完整的值作为一个普通属性保留。
  3. 把大块移出键——排序键应该标识/排序项目,而不是携带它的载荷;把长文本放进一个非键属性(它享有 400 KB 的项目预算)。
  4. 以字节而非字符测量——UTF-8 编码并计数,尤其是对非 ASCII 数据。

在 DynoTable 中查看

将草稿项粘贴到 item size calculator 中,并在写入之前检查关键属性字节计数。在 DynoTable 中,使用 ⌘K 打开表,使用暂存 (⌘S) 创建一个测试项,并确认键适合 — 过大的键在提交之前会失败。重新设计复合键时,在Query Builder中使用较短的键段进行原型查询。使用 ⌘P 切换配置文件; 在“设置”→“配置文件”上测试连接。参见连接 AWS安装

来源

相关错误

参考资料

最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。

无需控制台即可使用 DynamoDB

一款快速的 DynamoDB 桌面客户端,可运行 DynamoDB 无法执行的真正 SQL——JOINs、GROUP BY、聚合——并支持可视化编辑和运行在你自己的 Bedrock 密钥上的 AI agent。

30 天免费试用,无需信用卡 — 之后为无时间限制的免费版。