Я новичок в AWS, и я медленно пытался выполнять разные действия. Я недавно настроил API, который позволяет мне запрашивать таблицу Dynamodb, и теперь я пытаюсь настроить api, который позволит мне обновить значение в таблице с текущей температурой. Эти данные будут получены из сценария, запущенного на Raspberry Pi.
Я просмотрел так много руководств, но я еще не заблокировал их. Я могу писать в базу данных с помощью жестко запрограммированного сценария python, поэтому я знаю, что моя база данных и роли настроены правильно. Теперь я пытаюсь создать лямбда-функцию на основе узлов, которая будет принимать параметры из URL-адреса и помещать значения в таблицу. Мне чего-то не хватает.
Во-первых, нужно ли сопоставить значения в 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"] + '!'
});
}
})
};
Когда я тестирую его в api, используя «tempid = hotttub1» в строке запроса, я получаю эту ошибку: START RequestId: 1beb4572-65bf-4ab8-81a0-c217677c3a cc Версия: $ LATEST 2020-07-09T14: 02: 05.773Z 1beb4572-65bf-4ab8-81a0-c217677c3a cc INFO {tempid: 'hottub1'} 2020 -07-09T14: 02: 05.774Z 1beb4572-65bf-4ab8-81a0-c217677c3a cc ERROR Invoke Error {"errorType": "TypeError", "errorMessage": "Невозможно прочитать свойство 'tempid' of undefined", "stack ": [" TypeError: Невозможно прочесть свойство 'tempid' of undefined "," в Runtime.exports.handler (/var/task/index.js:11:47) "," в Runtime.handleOnce (/ var / runtime / Runtime. js: 66: 25) "]}
EDIT Если я распечатываю событие, я вижу, что значение поступает, и я, очевидно, ссылаюсь на него неправильно. Все еще ищу.
{"tempid": "hottub1"}