You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DynamoDB按主键查询报错:提供的键元素与schema不匹配

问题分析与解决

嘿,这个问题我之前也碰到过,核心原因是你查询时指定的主键名称和DynamoDB表实际定义的主键完全不匹配,所以才会抛出那个ValidationException: The provided key element does not match the schema异常。

从你的表结构来看,表的分区键是CallSid,但你在代码里却错误地用了"Id"作为Key的属性名:

// 这里的问题:用了不存在的主键名Id
let params = { TableName: process.env.CALL_NAVEGATION_HISTORY_TABLE, Key: { "Id": requestBody.CallSid } }

DynamoDB对主键的匹配要求非常严格——属性名称必须和表定义的主键(分区键/排序键)完全一致,连大小写都不能错。

修正后的代码

只需要把Key里的"Id"改成表实际的主键名"CallSid"就行:

let params = { 
  TableName: process.env.CALL_NAVEGATION_HISTORY_TABLE, 
  Key: { "CallSid": requestBody.CallSid } // 这里替换成正确的主键名
}
dynamoDb.get(params, function(err, data) {
 if(err){
 console.log('Error on dynamodb', err);
 callback(null, Helpers.xmlTwimlResponse(twiml));
 }
 console.log(data);
 callback(null, Helpers.xmlTwimlResponse(twiml));
});

额外提一句:如果你的表后续加了排序键,那用get方法时必须同时提供分区键和排序键的值;不过看你的表结构应该只有CallSid这一个主键,所以上面的修改应该就能解决问题啦!

内容的提问来源于stack exchange,提问作者user866364

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:43:40