2017-01-09 72 views
0

我已经在.net的aws工具包中创建了一个配置文件,并且我正在通过上传aws函数来创建一个lambda函数。 在aws控制台中测试时的功能不会引发任何错误。但是,数据不会添加到dynamodb表中。在dynamodb中不添加项目使用aws工具包.net

这里是代码片段:

public void FunctionHandler(DynamoDBEvent dynamoEvent, ILambdaContext context1) 
    { 
     AmazonDynamoDBClient client = new AmazonDynamoDBClient(); 
     var context = new DynamoDBContext(client); 

     Table awsnet = Table.LoadTable(client, "bookmaster"); 
     context1.Logger.LogLine("In method : Function Handler : start"); 
     CreateBookItem(bookmaster); 
    } 

private static void CreateBookItem(Table tblName) 
    { 
     var client = new AmazonDynamoDBClient();   
     Console.WriteLine("\n*** Executing CreateBookItem() ***"); 
     string sampleBookId = "3"; 
     var doc = new Document(); 
     doc["strid"] = sampleBookId; 
     tblName.PutItemAsync(doc); 
    } 

而且,所有实施例中使用的是 “tblName.PutItem(DOC)”,但它不可用。所以我用“tblName.PutItemAsync(doc)”。日志行显示在aws控制台中,但数据不会添加到表中。

+0

你可以检查来自tblName.PutItemAsync(doc)函数的响应是什么 –

回答

0

我能够用下面的代码来解决上述问题的方法:

公共无效FunctionHandler(DynamoDBEvent dynamoEvent,ILambdaContext CONTEXT1) { AmazonDynamoDBClient客户=新AmazonDynamoDBClient(); var context = new DynamoDBContext(client);

 Table bookmaster = Table.LoadTable(client, "bookmaster"); 
     context1.Logger.LogLine("In method : Function Handler : start");    

     string result = PutDataAsync(bookmaster, context1).Result; 
     context1.Logger.LogLine("Result = " + result);    
    } 

    private static async Task<string> PutDataAsync(Table table , ILambdaContext context1) 
    { 
     try 
     { 
      string sampleBookId = "3"; 
      var doc = new Document(); 
      doc["strid"] = sampleBookId; 

      Document x = await table.PutItemAsync(doc); 
      context1.Logger.LogLine("In method after put item async"); 
      return "success"; 
     } 
     catch(Exception ex) 
     { 
      context1.Logger.LogLine("In method after put item async catch block"); 
      return "failed"; 
     }      
    } 
相关问题