Когда вы впервые создаете элемент Todo, он сохраняется как элемент в таблице DynamodDB. Чтобы обновить элемент todo, вам необходимо обновить элемент в таблице DynamoDB.
Когда вы обновляете элемент в DynamoDB, вам нужно использовать AWS SDK для этого. Простейший sdk - использовать 1025 * Клиент документа DynamoDB , если вы используете nodejs в лямбда-функции.
// Load the AWS SDK for Node.js
var AWS = require('aws-sdk');
// Set the region
AWS.config.update({region: 'REGION'}); //replace Region with the region you are using ('EU-WEST-1')
// Create DynamoDB document client
var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});
// put the the following code in the exports.handler in your lambda function
var params = {
TableName: 'Todo-SOMERANDOMSTRING-ENV',//The name of your dynamodb table
Key: {
'id' : 'asasd123-asdsa1-12sdasads-12', // the id of your todo item
},
UpdateExpression: 'set status = :s',
ExpressionAttributeValues: {
':s' : 'To do' // what the new status should be
}
};
// and run the update function
docClient.update(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data);
}
});
Редактировать
Исходя из вашего комментария, я думаю, что вы, возможно, находитесь в разделе лямбда-триггеров DynamoDB (?), И ваша стандартная лямбда-функция может выглядеть следующим образом:
exports.handler = function (event, context) {
console.log(JSON.stringify(event, null, 2));
event.Records.forEach((record) => {
console.log(record.eventID);
console.log(record.eventName);
console.log('DynamoDB Record: %j', record.dynamodb);
});
context.done(null, 'Successfully processed DynamoDB record');
};
Я не делал этот тип вызывайте себя раньше, поэтому я не совсем уверен, как структурированы данные в записи, но я думаю, что они могут быть доступны следующим образом:
record.data.id
//or
record.Item.id
Вы можете узнать это, перейдя к лямбда-консоли, найдите и откройте свою лямбда-функцию, go для «мониторинга», а затем откройте «Просмотр журналов в CloudWatch» в AWS и проверьте журналы CloudWatch после создания элемента.
Предполагая, что это запись. Элемент .id ваш лямбда-код может выглядеть так (не проверено):
var AWS = require('aws-sdk');
AWS.config.update({region: 'REGION'});
var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});
exports.handler = function (event, context) {
console.log(JSON.stringify(event, null, 2));
event.Records.forEach((record) => {
var params = {
TableName: 'YOUR-DB-TABLE-NAME',
Key: {
'id' : record.Item.id,
},
UpdateExpression: 'set status = :status',
ExpressionAttributeValues: {
':status' : 'To do' // what the new status should be
}
};
docClient.update(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data);
}
});
});
context.done(null, 'Successfully processed DynamoDB record');
};
Я не думаю, что этот код полностью завершен, и вам, возможно, придется изменить, как / когда работает функция context.done (потому что я думаю, что не выполнится до того, как код завершит обновление элемента), но это может привести вас в правильном направлении.