One or more parameter values were invalid

TL;DR — DynamoDB 接受了请求的形态,但拒绝了其中一个特定的值:一个空集合、一个键中的空字符串、一个类型与模式不匹配的值,或一个不被允许的 null。读消息的其余部分——它会指明确切的参数——并修复那个值。

含义

ValidationException: One or more parameter values were invalid: <specific reason>

这是一个 ValidationException(HTTP 400),其消息体精确指出了一个违反规则的值——AWS 只把消息记载为"varies, depending upon the specific error(s) encountered"。前缀是通用的;重要的部分是它后面的内容——例如一个 AttributeValue 不能为键包含空字符串、一个集合不能为空,或一个键值的类型与模式不匹配。它原样不可重试;这个值必须改变。

为什么会发生

消息尾部拼出的典型原因(确切措辞因情况而异):

  • 一个键属性中的空字符串或二进制值——非键的字符串和二进制值允许为空;表和索引的键不允许。
  • 一个空集合——一个零成员的 SS/NS/BS。集合在任何地方都必须非空;空列表和映射没问题。
  • 一个键的类型不匹配(例如 expected: S actual: N)——值的类型与表的键模式不匹配。
  • 一个 null 值传给了一个不接受它的属性,或一个 marshaller 为一个 undefined 字段发出了 null
  • 一个超出其类型范围的值(参见 number overflow)。

如何修复

  1. 读完整消息。 DynamoDB 会指明出错的参数和确切的规则——那个字符串就是修复方法。
  2. 给键真实的值——分区键/排序键中绝不用空字符串或空二进制。
  3. 丢掉空集合——当一个集合没有成员时省略该属性,或改为存储一个标量/NULL
  4. 让类型与模式匹配——把一个数字键作为数字发送、把一个字符串键作为字符串发送;不要弄错包裹。
  5. 在写入前剥离 undefined/null(文档客户端的 removeUndefinedValues 选项处理常见情况)。

常见问题

"One or more parameter values were invalid" 是什么意思? 你请求中的一个特定值违反了 DynamoDB 的规则——最常见的是一个键中的空字符串、一个空集合、一个与键模式不匹配的类型,或一个不被允许的 null。完整消息会指明确切的参数和原因。

为什么一个空字符串只是有时失败? DynamoDB 允许非键属性使用空字符串,但在键属性中拒绝它们。分区键或排序键中的一个空字符串会引发 "An AttributeValue may not contain an empty string";同样的值在一个常规属性中会被接受。

相关错误

参考资料

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

无需控制台即可使用 DynamoDB

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

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