我尝试使用此脚本将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 !!");
}
答案 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\"}
这项工作,但我没用“所以我使用拆分删除它。