Я знаю, что это недостаток в моих знаниях, но я не могу решить это. Я провел последние пару часов, просматривая и пробуя варианты, но не могу понять, что не так.
Я написал успешный фрагмент файла node.js, который при запуске из командной строки возвращает таблицу в форме JSON из локальной AWS DynamoDB.
Я сейчас пытаюсь превратить это в лямда-звонок. И там, где это идет не так. Я не могу заставить лямду вернуть что-либо, и я не знаю почему. Я почти уверен, что это потому, что я не понимаю, как работает механизм обратного вызова, но читаю, что это не помогло и не позволило мне наткнуться на ответ.
Вот код, который я получил:
var AWS = require("aws-sdk");
exports.handler = (event, context, callback) => {
let id = (event.pathParameters || {}).division || false;
switch(event.httpMethod){
case "GET":
if(id) {
//callback(null, {body: "Returning Divison " + id});
AWS.config.update({
region: "us-west-2",
endpoint: "http://localhost:8000"
});
var docClient = new AWS.DynamoDB.DocumentClient()
var table = 'League';
var params = {
TableName : table,
KeyConditionExpression: "#division = :division",
ExpressionAttributeNames: {
"#division": "division"
},
ExpressionAttributeValues: {
":division": id
}
};
docClient.query(params, function(err, data) {
if (err)
{
//console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
callback(err, null);
}
else
{
//console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
callback(null, JSON.stringify(data.Item));
}
})
break;
}
callback(null, {body: "Return all divisions"});
break;
default:
// Send HTTP 501: Not Implemented
console.log("Error: unsupported HTTP method (" + event.httpMethod + ")");
callback(null, { statusCode: 501 })
}
}
Если я закомментирую вызов docClient.query
, он работает и возвращает данные в браузер (хотя только однострочные сообщения). Когда я включаю его, происходит сбой, и я получаю следующее сообщение от SAM:
Function 'TableGetTest' timed out after 3 seconds
Function returned an invalid response (must include one of: body, headers or statusCode in the response object). Response received: b''
Любая помощь или указатели будут оценены.