1

私はこの単純なラムダ関数を使用して、私の個人的なユーザーテーブルにユーザーオブジェクトを作成します。テストをクリックするとnullが返されます。しかし、私はエラーが何であるか分かりませんか? lambdaを使ってdynamoDBにオブジェクトを作成する方法は?

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); 
       } 
      }); 


}; 

そして、私のリクエストボディ内

は私が持っている:私はAPIゲートウェイエンドポイントを通じて呼び出すコードを実行してみましたし、それがうまく働いた

{ 
    "email":"[email protected]", 
    "birthdate" : "1/1/1990", 
    "firstName" : "Tom", 
    "lastName" : "Sir", 
    "username" : "Archer" 
} 
+1

ラムダ関数に資格情報を入れる必要はありません。単に役割を機能に割り当てるだけで、権限は自動的に継承されます。 –

+0

ログをいくつか追加します。 try/catchブロックをいくつか追加します。あなたの質問にログ出力を含めてください。 –

答えて

0

は、ここに私のラムダ関数です。あなたのポストでは、 "テスト"を呼び出すことを意味したとき、それはラムダコンソール内のテストオプションですか?そのような場合は、サンプルイベントテンプレートとして「API Gateway AWS Proxy」を選択していることを確認してください。

テストする "API Gateway AWS Proxy"イベントテンプレートを選択した後、ペイロードの本文を編集し、リクエスト本体を追加します。二重引用符をエスケープしてください。

ラムダをテストするもう1つの方法は、APIゲートウェイエンドポイントを呼び出すことです。 APIを呼び出す前に変更を加えた後に、API Gatewayが展開されていることを確認してください。私はPostmanを使用し、あなたがDynamoDBテーブルに言及した要求をPOSTすることに成功しました

関連する問題