Javascript 如何使用lambda在dynamoDB中创建对象?

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

所以我有一个简单的lambda函数,它在我的personal user表中创建一个user对象。当我点击test时,它返回null。但我不确定错误是什么

这是我的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":"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块。将日志输出包括在问题中。