Проблема:
У меня есть функция node.js (8.10) AWS Lambda, которая принимает объект json и публикует его в теме IOT.Функция успешно публикуется в теме, однако после запуска она непрерывно вызывается до тех пор, пока я не уменьшу параллелизм до нуля, чтобы остановить дальнейший вызов функции.
Я пытаюсь выяснить, что я реализовалнеправильно, что вызывает более одного экземпляра функции для вызова.
Функция:
Вот моя функция:
var AWS = require('aws-sdk');
exports.handler = function (event, context) {
var iotdata = new AWS.IotData({endpoint: 'xxxxxxxxxx.iot.us-east-1.amazonaws.com'});
var params = {
topic: '/PiDevTest/SyncDevice',
payload: JSON.stringify(event),
qos: 0
};
iotdata.publish(params, function(err, data) {
if (err) {
console.log(err, err.stack);
} else {
console.log("Message sent.");
context.succeed();
}
});
};
Мой тестовый json:
{
"success": 1,
"TccvID": "TestID01"
}
Тестовая консоль имеет ответ "null", но в разделе IOT отображаются данные из тестового json, публикуемые в теме примерно раз в секунду.
То, что я попробовал
-Я попытался определить обработчик в его собственной, неанонимной функции, называемой обработчик, и затем имел export.handler = handler;Это не вызвало никаких ошибок, но также не привело к успешной публикации в теме iot.
-Я подумал, что, возможно, проблемы были с обратным вызовом node.js.Я пытался реализовать это и опустить (текущая итерация выше), но ни один из способов не помог.Я где-то читал, что функция будет повторяться в случае ошибки, но я считаю, что это происходит только три раза, поэтому это не объясняет неопределенный вызов функции.
-Я также пытался вызвать функцию изеще одна лямбда, чтобы убедиться, что проблема не в инструменте тестирования aws.Это привело к тому же самому поведению.
Резюме:
Что я делаю неправильно, что заставляет эту функцию бесконечно публиковать данные json в теме iot?
Заранее спасибо за ваше время и опыт.