У меня есть лямбда-функция в AWS, которая должна вызываться всякий раз, когда полезная нагрузка mqtt отправляется с моего устройства iot.У меня есть настроенное правило iot, которое подписывается на тему mqtt, которая должна преобразовывать полезную нагрузку из формата csv в формат json, но сейчас функция никогда не вызывается.
Я проверил, чтобы убедиться, чтотема mqtt публикуется с правильной полезной нагрузкой, и это определенно так.Вот "index.js" моей лямбда-функции.
var https = require('https');
exports.handler = (event, context, callback) => {
//split lines in csv
var lines = event.split("\n");
var result = [];
var headers = ["Timestamp","Temperature","humidity","counts_0.3","counts_0.5","counts_1","counts_2.5","counts_5","counts_10","pm1","pm2.5","pm10","pma1","pma2.5","pma10"];
for (var i = 0; i < lines.length; i++) {
var obj = {};
var currentline = lines[i].split(",");
for (var j = 0; j < headers.length; j++) {
obj[headers[j]] = currentline[j];
}
result.push(obj);
}
//store json Object in postData to be published to Losant
var postData = JSON.stringify(result); //JSON
var options = {
hostname: 'triggers.losant.com',
port: 443,
path: '/webhooks/nV2kS3GWzETodHeFin4vlLhoAwmqkFdtfdmGV7we',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(postData)
}
};
var req = https.request(options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
});
res.on('end', () => {
callback();
});
});
req.on('error', (e) => {
console.log(`problem with request: ${e.message}`);
callback();
});
// write data to request body
req.write(postData);
req.end();
};
Вот несколько скриншотов из моего правила IOT.
SQL-запрос MQTTопубликовано
Функция никогда не вызывается