Я пытаюсь отправить некоторые значения в DynamoDb с помощью шлюза API и лямбда-функции. У меня все части работают локально, но я упускаю кое-что фундаментальное, когда собираю их все вместе.
Вот моя лямбда-функция. Когда я его тестирую, он работает должным образом.
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = (event, context, callback) => {
var temperatureid = JSON.stringify(event.tempid, null, 2)
var temperature = JSON.stringify(event.temperature, null, 2)
console.info("EVENT\n" + temperatureid + ", " + temperature)
// var query = event.queryStringParameters;
// console.log(query);
dynamodb.putItem({
TableName: "temperature",
Item: {
"tempid": {
S: temperatureid,
},
"temperature": {
S: temperature,
}
}
}, function(err, data) {
if (err) {
console.log(err, err.stack);
callback(null, {
statusCode: '500',
body: err
});
} else {
callback(null, {
statusCode: '200',
body: 'Result from ' + temperatureid + '!'
});
}
})
};
В API я установил ресурс / метод типа post. Тип интеграции - «Лямбда-функция», и я ссылаюсь на лямбда-функцию выше. Я подозреваю, что проблема заключается в шаблоне сопоставления. В настоящее время у меня он установлен следующим образом (application / json - тип содержимого):
#set($inputRoot = $input.path('$'))
{
"tempid" : $inputRoot.tempid,
"temperature" : $inputRoot.temperature
}
при тестировании я ввожу это в область строк запроса: tempid = hottub3 & temperature = 109
Я получаю эту ошибку:
{"message": "Не удалось проанализировать тело запроса в json: Неожиданный символ (',' (код 44)): ожидалось значение \ n в [Источник: (byte []) "{\ r \ n" tempid ":, \ r \ n" температура ": \ г \ п}"; строка: 2, столбец: 15] "}
Пт 10 июля 13:35:09 UT C 2020: Метод HTTP: POST, Путь к ресурсам: / temperature Пт 10 июля 13:35:09 UT C 2020: Путь запроса метода: {} Пт 10 июля 13:35:09 UT C 2020: Строка запроса запроса метода: {temperature = 109, tempid = hottub3} Пт 10 июля 13:35:09 UT C 2020: Заголовки запроса метода: {} Пт 10 июля, 13:35:09 UT C 2020: Тело запроса метода до преобразований:
Пт 10 июля 13:35:09 UT C 2020: Выполнение не выполнено : Не удалось преобразовать тело запроса в json: Неожиданный символ (',' (код 44)): ожидалось значение в [Источник: (byte []) "{" tempid ":," temperature ":}"; строка : 2, столбец: 15]