我正在尝试在AWS控制台内部创建一个lambda函数,该函数对我的DynamoDB表记录执行记录的POST。
运行测试时,我目前收到一条成功消息,因为我还没有连接触发器,但是测试消息返回了null,并且没有向表中发布任何内容。
我已经遍历了AWS开发工具包SDK文档,但是在运行lambda函数所需的exports.handle方面,我找不到所需的内容。我看到没有导出的代码端Node.js。
我已经尝试过像这样设置recordId和recordAlbum,
let recordId = 1;
let recordAlbum = "Album";
并且在测试时只会返回结构错误。
有人对此有任何资源或经验吗?我在玩,以构建无服务器的CRUD应用程序。任何建议或资源都将真正帮助您。
这是我在AWS Lambda函数中使用的代码。
let AWS = require('aws-sdk');
// Set the region
AWS.config.update({region: 'us-east-1'});
// Create the DynamoDB service object
let ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
let recordId = {N: '001'};
let recordAlbum = {S: 'Album Here'}
exports.handler = async function(event, context) {
let params = {
TableName: 'TABLE_NAME',
Item: {
'recordId' : recordId,
'album' : recordAlbum
}
};
console.log('generating record ID', recordId);
console.log('generating Album', recordAlbum);
console.log('generated parmas', params);
// Call DynamoDB to add the item to the table
ddb.putItem(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data);
}
});
}
答案 0 :(得分:0)
您有一个async
处理程序,因此您应该使用Promise而不是回调。
尝试一下:
exports.handler = async function(event, context) {
let params = {
TableName: 'TABLE_NAME',
Item: {
'recordId' : recordId,
'album' : recordAlbum
}
};
console.log('generating record ID', recordId);
console.log('generating Album', recordAlbum);
console.log('generated parmas', params);
try {
let result = await ddb.putItem(params).promise();
console.log(result);
}
catch(err)
{
console.error(err);
}
}
有关AWS JS SDK中的async/await on the AWS blog和documentation on the promise()
method的更多信息。
答案 1 :(得分:0)
通过遵循步骤3并修改信息,可以在本教程中找到该问题的一个答案。
我将“ Id”更改为“ id”,并将exports.writeMovie更改为exports.handler
它不使用async和await,虽然已经过时,但是可以使用。