AWS Lambda 从 MQTT 请求中放入项目
AWS Lambda putting item from MQTT request
我尝试使用此脚本将 MQTT 请求内容放入带有 Lambda 函数的 DynamoDB 中:
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 !!");
}
我有 create/set thing/rule/policy 并且此脚本有效,但是,我有未定义的值,我尝试获取 MQTT 内容以将其存储到数据库中。
为了测试这个我 post SNS 的新主题,我没有使用正确的格式我有 post 一些像这样的消息(原始):
{"Val":"Value"}
Val:"Value"
"Val":Value
我找到了解决这个问题的方法:
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,在消息字段中输入:
{\"key1\": \"Val\",\"key2\": \"ValId\"}
这项工作但我没有用"所以我使用拆分来删除它。
我尝试使用此脚本将 MQTT 请求内容放入带有 Lambda 函数的 DynamoDB 中:
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 !!");
}
我有 create/set thing/rule/policy 并且此脚本有效,但是,我有未定义的值,我尝试获取 MQTT 内容以将其存储到数据库中。 为了测试这个我 post SNS 的新主题,我没有使用正确的格式我有 post 一些像这样的消息(原始):
{"Val":"Value"}
Val:"Value"
"Val":Value
我找到了解决这个问题的方法:
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,在消息字段中输入:
{\"key1\": \"Val\",\"key2\": \"ValId\"}
这项工作但我没有用"所以我使用拆分来删除它。