Javascript 如何使用lambda在dynamoDB中创建对象?
所以我有一个简单的lambda函数,它在我的personal user表中创建一个user对象。当我点击test时,它返回null。但我不确定错误是什么 这是我的lambda函数:Javascript 如何使用lambda在dynamoDB中创建对象?,javascript,amazon-web-services,amazon-dynamodb,aws-lambda,aws-sdk,Javascript,Amazon Web Services,Amazon Dynamodb,Aws Lambda,Aws Sdk,所以我有一个简单的lambda函数,它在我的personal user表中创建一个user对象。当我点击test时,它返回null。但我不确定错误是什么 这是我的lambda函数: var AWS = require('aws-sdk'); var dynamoDBConfiguration = { "accessKeyId": "###", "secretAccessKey": "###", "region": "MY_REGION" }; AWS.config.u
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":"tomSample@gmail.com",
"birthdate" : "1/1/1990",
"firstName" : "Tom",
"lastName" : "Sir",
"username" : "Archer"
}
我尝试通过API网关端点运行您的代码调用,效果很好。在你的帖子中,当你想调用“test”时,它是Lambda控制台中的test选项吗?如果是这种情况,请确保已选择“API网关AWS代理”作为示例事件模板 选择要测试的“API网关AWS代理”事件模板后,编辑有效负载中的正文并将请求正文添加到其中。确保转义双引号
测试Lambda的另一种方法是调用API网关端点。在调用API之前,确保在进行任何更改后部署API网关。我使用了Postman,并且成功地将您提到的请求发布到DynamoDB表中我尝试通过API网关端点运行您的代码调用,效果很好。在你的帖子中,当你想调用“test”时,它是Lambda控制台中的test选项吗?如果是这种情况,请确保已选择“API网关AWS代理”作为示例事件模板 选择要测试的“API网关AWS代理”事件模板后,编辑有效负载中的正文并将请求正文添加到其中。确保转义双引号
测试Lambda的另一种方法是调用API网关端点。在调用API之前,确保在进行任何更改后部署API网关。我使用了Postman,并且成功地将您提到的请求发布到DynamoDB表中只是一条旁注——应该不需要在Lambda函数中添加凭据。只需为函数分配一个角色,它就会自动继承权限。添加一些日志记录。添加一些try/catch块。在您的问题中包括日志输出。只是一个旁注——不需要在Lambda函数中放置凭据。只需为函数分配一个角色,它就会自动继承权限。添加一些日志记录。添加一些try/catch块。将日志输出包括在问题中。