如何使用lambda在dynamoDB中创建对象?
问题描述:
所以我有这个简单的lambda函数,只是在我的个人用户表中创建一个用户对象。当我点击测试时,它返回null。但我不确定错误是什么?如何使用lambda在dynamoDB中创建对象?
这里是我的lambda表达式:
var AWS = require('aws-sdk');
var dynamoDBConfiguration =
{
"accessKeyId": "###",
"secretAccessKey": "###",
"region": "MY_REGION"
};
AWS.config.update(dynamoDBConfiguration);
//var dynamodb = new AWS.DynamoDB();
var dynamodb = new AWS.DynamoDB.DocumentClient();
exports.handler = function(event, context)
{
console.log('stageA');
console.log(JSON.stringify(event, null, ' '));
var responseCode = 200;
var userTableName = "usersTable";
var requestBody = event.body;
var pathParams = event.path;
var httpMethod = event.httpMethod; // HTTP Method (e.g., POST, GET, HEAD)
//User parameters
var displayName;
var email;
var fbUserID;
var firstName;
var folders;
var lastName;
var origin;
var profileImageRef;
var level;
var username;
var birthdate;
var experience;
var folder;
var params;
console.log('create by email action');
requestBody = JSON.parse(requestBody);
//Set variables
firstName = requestBody.firstName;
lastName = requestBody.lastName;
email = requestBody.email;
username = requestBody.username;
experience = "0";
birthdate = requestBody.birthdate;
params = {
TableName:userTableName,
Item:{
"displayName": username,
"email": email,
"firstName": firstName,
"folderNames": {
"My Cards": {"name": "My Cards"}
},
"lastName": lastName,
"experience": experience,
"username": username,
"birthdate": birthdate
}
};
dynamodb.put(params, function(err, data)
{ if (err) {
console.log(err);
context.done(err);
} else {
var response =
{
statusCode: responseCode,
headers:
{
"x-custom-header" : "custom header value"
},
body: JSON.stringify(username)
};
console.log('great success: %j',data);
context.succeed(response);
}
});
};
而且在我的要求下身体,我有:
{
"email":"[email protected]",
"birthdate" : "1/1/1990",
"firstName" : "Tom",
"lastName" : "Sir",
"username" : "Archer"
}
答
我试图运行你的代码通过API网关端点调用它工作得很好。在您的文章中,当您打算调用“test”时,它是Lambda控制台中的测试选项吗?如果是这种情况,请确保您选择了“API Gateway AWS Proxy”作为Sample事件模板。
选择“API Gateway AWS Proxy”事件模板进行测试后,编辑有效负载中的正文并将请求正文添加到该正文中。请务必避开双引号。
另一种测试Lambda的方法是调用API网关端点。在调用API之前做出任何更改之后,请确保您的API网关已部署。我使用Postman,并成功地发布了您提到的DynamoDB表的请求
只需一条评论 - 不需要将凭证放入Lambda函数。只需将一个角色分配给该功能,并自动继承权限。 –
添加一些日志记录。添加一些try/catch块。在你的问题中包含日志输出。 –