Value provided in ExpressionAttributeValues unused in expressions
TL;DR — 你在 ExpressionAttributeValues 中提供了一个没有任何表达式引用的值占位符(例如 :status)。DynamoDB 要求每个声明的 :value 都在某个 KeyConditionExpression、FilterExpression、UpdateExpression 或 ConditionExpression 中被使用。移除这个孤立的值——或者修复本应使用它的那个表达式。
含义
ValidationException: 1 validation error detected: Value provided in ExpressionAttributeValues unused in
expressions: keys: {:status}
# what the engine actually returns, reproduced against DynamoDB Local:
ValidationException: 1 validation error detected: Value provided in ExpressionAttributeValues unused in expressions: keys: {:status}ExpressionAttributeValues 是你的表达式所比较的字面值(:status、:min……)的替换 map。DynamoDB 强制执行一个双向契约:你在表达式中使用的每个 :placeholder 都必须被声明,并且每个声明的占位符都必须被使用。一个没有任何表达式引用的残留值会触发这个 HTTP 400 ValidationException——属于客户端错误,在 map 匹配之前不可重试。
为什么会发生
- 编辑表达式后残留的陈旧值——你从表达式中去掉了
#s = :status,却把:status留在了值 map 里。 - 复制粘贴的偏移——重用了一个先前请求的值 map,而那个请求的条件比当前的多。
- 一个过度声明的生成请求——一个构建器为一个后来被移除的过滤子句添加了
:v。 - 名称与值的混淆——你本想要
#status(一个名称别名),却声明了:status(一个值)。 - 一个拼写错误——表达式用了
:stat,而 map 声明的是:status。
如何修复
- 从
ExpressionAttributeValues中删除消息指明的未使用值。 - 让值与表达式步调一致——只有当某个表达式引用它时才声明一个
:placeholder。 - 确认名称与值——
:占位符进ExpressionAttributeValues;#别名进ExpressionAttributeNames。 - 把表达式和它的 map 一起构建,这样就没有值会悬空。
在 DynoTable 中查询
DynoTable 根据你配置的过滤器行生成 ExpressionAttributeValues — 输出中的每个 :placeholder 都会在表达式字符串中引用。使用 ⌘K 打开表格,在查询面板中添加过滤器,然后将发出的映射复制到 SDK 调用中以消除孤立值。调试失败的请求时,将表达式粘贴到 Expression Builder 并将其值映射与你的值映射进行比较。Settings → Profiles上的 Profile 切换 (⌘P) 和 Test Connection 确认你正在针对同一个表进行测试。参见连接 AWS和安装。
来源
- Using expression attribute values in DynamoDB(2026-07-13 验证)
- DynamoDB condition expression examples(2026-07-13 验证)
相关错误
- Value provided in ExpressionAttributeNames unused in expressions——
#name别名的同一规则。 - ExpressionAttributeValues contains invalid value——map 中一个格式错误或为空的值,以及反向不匹配:一个
:placeholder被引用却从未被提供。 - The provided expression refers to an attribute that does not exist in the item——表达式读取了一个不在那里的项目属性。
- 学习:Expression names & values
参考资料
- Using expression attribute values in DynamoDB — Amazon DynamoDB Developer Guide
- DynamoDB condition expression examples — Amazon DynamoDB Developer Guide
- Query — Amazon DynamoDB API Reference
最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。