AWS Lambda从MQTT请求中放置项目

时间:2016-11-10 13:11:54

标签: node.js amazon-web-services amazon-dynamodb aws-lambda mqtt

我尝试使用此脚本将MQTT请求内容放入带有Lambda函数的DynamoDB中:

substring()

我有创建/设置事物/规则/策略并且这个脚本有效,但我有未定义的值,我尝试获取MQTT内容以将其存储到数据库中。 为了测试这个我用SNS发布新主题,我没有使用正确的格式我发布了一些这样的消息(原始):

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

1 个答案:

答案 0 :(得分: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"}} 

或使用lambda动作 - >配置测试事件 - > SNS,在Message字段中输入:

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

这项工作,但我没用“所以我使用拆分删除它。