0

我嘗試MQTT請求的內容放入DynamoDB與lambda函數與此腳本:AWS LAMBDA把項目從MQTT要求

var AWS = require("aws-sdk"); 
var dynamodb = new AWS.DynamoDB(); 

exports.handler = function index(e,ctx,callback){ 

//var msg = JSON.stringify(ctx); 
var msg = e.Name; 
var params = { 
     TableName:"myTable", 
     Item:{ 
      Val: {S: msg}, 
      ValId: { S:"Id"} 
     } 
    }; 


    dynamodb.putItem(params,callback); 
    callback(null,"Putting item Marcel !!"); 

} 

我已創建/套的事情/規則/政策,這個腳本的工作,但我有未定義的值,我嘗試獲取MQTT內容以將其存儲到數據庫中。 爲了測試這個我發表新話題SNS,我沒有使用正確的格式,我有張貼一些像這樣的消息(生):

{"Val":"Value"} Val:"Value" "Val":Value

回答

0

我找到一種方法一起解決這個問題:

var AWS = require("aws-sdk"); 
var dynamodb = new AWS.DynamoDB(); 

exports.handler = function index(e,ctx,callback){ 
// new block 
const record = e.Records[0].Sns.Message; 
var msgJSON = JSON.parse(record);   
var msg = msgJSON.key1;     
var msg2 = msgJSON.key2;      
var string_to_send = JSON.stringify(msg)+"-"+JSON.stringify(msg2); 
// 
var clean_string = string_to_send.split('"').join(''); 

var params = { 
     TableName:"myTable", 
     Item:{ 
      Val: {S: clean_string}, 
      ValId: {S: "Id"} 
     } 
    }; 


    dynamodb.putItem(params,callback); 
    callback(null,"Putting item Marcel !!"); 

} 

爲了測試這一點,你需要使用SNS的話題發表這樣的:

{"key1": {"TheValue1"},"key2": {"TheValue2"}} 

或拉姆達行動 - >配置測試活動 - > SNS,在消息字段:

{\"key1\": \"Val\",\"key2\": \"ValId\"} 

這項工作,但我沒用「所以我用拆分刪除它。