【发布时间】:2018-04-11 05:29:14
【问题描述】:
我正在尝试编写一个 lambda 函数,该函数从名为 simul-MOCK_LEADS_TBL 的 dynamodb 表中检索数据。我想出了以下 nodejs 代码来实现这一点:
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region: 'us-west-2'});
exports.handler = (event, context, callback) => {
// TODO implement
var table = "simul-MOCK_LEADS_TBL";
var lead_email = "hwdnpny@xyz.com";
var params = {
TableName: table,
Key:{
"lead_email": lead_email
}
};
docClient.get(params, function(err, data) {
if(err) {
callback(err, null);
} else {
callback(null, data.Items);
}
});
}
最终目标是基本上根据将在事件键中传递的电子邮件来查询表。但是,我不断收到以下错误:
Response:
{
"errorMessage": "The provided key element does not match the schema",
"errorType": "ValidationException",
"stackTrace": [
"Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:48:27)",
"Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20)",
"Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:77:10)",
"Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:683:14)",
"Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)",
"AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)",
"/var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10",
"Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)",
"Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:685:12)",
"Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:115:18)"
]
}
Request ID:
"7d76c52a-3c61-11e8-b415-093987d0d3bc"
Function Logs:
START RequestId: 7d76c52a-3c61-11e8-b415-093987d0d3bc Version: $LATEST
2018-04-10T01:50:05.834Z 7d76c52a-3c61-11e8-b415-093987d0d3bc {"errorMessage":"The provided key element does not match the schema","errorType":"ValidationException","stackTrace":["Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:48:27)","Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20)","Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:77:10)","Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:683:14)","Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)","AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)","/var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10","Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)","Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:685:12)","Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:115:18)"]}
END RequestId: 7d76c52a-3c61-11e8-b415-093987d0d3bc
REPORT RequestId: 7d76c52a-3c61-11e8-b415-093987d0d3bc Duration: 215.36 ms Billed Duration: 300 ms Memory Size: 512 MB Max Memory Used: 37 MB
我检查了多个文档和网站,它们都遵循相同的代码来执行此操作,但是我不确定为什么它不适合我:
资源:
https://rishabh.io/misc/dynamodb-with-nodejs.html https://medium.com/quick-code/node-js-restful-api-with-dynamodb-local-7e342a934a24
注意:--- 表格详细信息----
Table name simul-MOCK_LEADS_TBL
Primary partition key lead_email (String)
Primary sort key lead_id (String)
Point-in-time recovery DISABLEDEnable
Encryption DISABLED
Time to live attribute DISABLEDManage TTL
Table status Active
Creation date April 6, 2018 at 12:19:00 PM UTC-7
UTC: April 6, 2018 at 7:19:00 PM UTC
Local: April 6, 2018 at 12:19:00 PM UTC-7
Region (Oregon): April 6, 2018 at 11:19:00 AM UTC-8
Provisioned read capacity units 5 (Auto Scaling Enabled)
Provisioned write capacity units 5 (Auto Scaling Enabled)
Last decrease time -
Last increase time -
Storage size (in bytes) 34.22 KB
Item count 107
Region US West (Oregon)
【问题讨论】:
标签: node.js aws-lambda amazon-dynamodb aws-sdk