У меня проблемы с DynamoDB. Я настроил свои лямбда-разрешения для полного CRUDL (доступ администратора, поэтому никаких ограничений). Ниже приведен обработчик, и он основан на doca https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.NodeJs.03.html
const uuidv4 = require("uuid/v4");
const services = require("./services/services");
var AWS = require("aws-sdk");
AWS.config.update({ region: "eu-west-2" });
var docClient = new AWS.DynamoDB.DocumentClient();
var tableName = "usersTable";
module.exports = {
registerUser: async (event, context) => {
const id = uuidv4();
let body;
if (event.body !== null && event.body !== undefined) {
body = JSON.parse(event.body);
}
const isValid = await services.validateUser(body);
if (isValid) {
var params = {
TableName: tableName,
Item: {
userId: "123abc",
firstName: "finn",
lastName: "murtons",
email: "email@email.com",
password: "secret"
}
};
console.log("Adding a new item...");
console.log(" Adding params", params);
docClient.put(params, function(err, data) {
if (err) {
console.error(
"Unable to add item. Error JSON:",
JSON.stringify(err, null, 2)
);
} else {
console.log("Added item:", JSON.stringify(data, null, 2));
}
});
}
},
... other functions
Для этого примера я жестко прописываю параметры для ясности, но, очевидно, я обычно получаю их из event.body.
Когда я отправляю запрос на эту лямбду, я получаю ошибку 502. Глядя на журналы cloudwatch, он достигает:
INFO Adding params { TableName: 'usersTable',
Item:
{ userId: '123abc',
firstName: 'finn',
lastName: 'murtons',
email: 'email@email.com',
password: 'secret' } }
Тогда журналов больше нет. Игнорируйте функцию isValid, она просто проверяет наличие в теле события запроса обязательных полей.
У кого-нибудь есть идеи, где я могу ошибаться?