我是AWS的新手,我一直在慢慢尝试执行不同的操作。我最近设置了一个API,该查询使我可以查询一个dynamodb表,现在,我试图设置一个API,该API可以使我用当前温度更新表中的值。这些数据将来自在树莓派上运行的脚本。
我已经花了很多篇教程,但是我还没有完全锁定它。我能够使用硬编码的python脚本写入数据库,因此我知道数据库和角色的设置正确。我现在正在尝试创建一个基于节点的lambda函数,该函数将接受URL中的parms并将值放入表中。我想念一些东西。
首先,我需要映射api中的值吗?有些指南会这样做,而另一些则不会。就像我说的那样,理想情况下,我想将它们作为URL参数传递。
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = (event, context, callback) => {
dynamodb.putItem({
TableName: "temperature",
Item: {
"tempid": {
S: event.queryStringParameters["tempid"]
}
}
}, function(err, data) {
if (err) {
console.log(err, err.stack);
callback(null, {
statusCode: '500',
body: err
});
} else {
callback(null, {
statusCode: '200',
body: 'Result from ' + event.queryStringParameters["tempid"] + '!'
});
}
})
};
当我在查询字符串中使用“ tempid = hotttub1”在api中对其进行测试时,出现此错误:
START RequestId:1beb4572-65bf-4ab8-81a0-c217677c3acc版本:$ LATEST
2020-07-09T14:02:05.773Z 1beb4572-65bf-4ab8-81a0-c217677c3acc INFO {tempid:'hottub1'}
2020-07-09T14:02:05.774Z 1beb4572-65bf-4ab8-81a0-c217677c3acc ERROR调用错误{“ errorType”:“ TypeError”,“ errorMessage”:“无法读取未定义属性'tempid',”堆栈“: [“ TypeError:无法读取未定义的'tempid'属性',”在Runtime.exports.handler(/var/task/index.js:11:47)“,”在Runtime.handleOnce(/ var / runtime / Runtime。 js:66:25)“]}
编辑 如果我打印出事件,则可以看到该值即将传入,显然是在引用错误。还在寻找。
{ “ tempid”:“ hottub1” }
答案 0 :(得分:0)
必须采用以下格式:
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = (event, context, callback) => {
console.info("EVENT\n" + JSON.stringify(event.tempid, null, 2))
var temperatureid = JSON.stringify(event.tempid, null, 2)
dynamodb.putItem({
TableName: "temperature",
Item: {
"tempid": {
S: temperatureid
}
}