Лямбда-функция срабатывает более одного раза
Я пытаюсь создать на AWS следующую архитектуру. Архитектура AWS
У меня к ядру Iot подключено 3 устройства:
-Термометр
-Кондиционер
-Лямбда-функция
Термометр должен каждые 5 секунд отправлять данные о температуре в ядро, затем данные телеметрии отправляются в поток Kinesis и в Kinesis Analytics.
Вот запрос, который группирует данные, поступающие в 60-секундные окна.
Запрос:
CREATE OR REPLACE STREAM "TEMPSTREAM" (
"avg_temp" BIGINT NOT NULL,
"dateTime" TIMESTAMP,
"sender_id" VARCHAR(64));
CREATE OR REPLACE PUMP "SAMPLEPUMP" AS
INSERT INTO "TEMPSTREAM" ("avg_temp","dateTime","
SELECT STREAM AVG("temperature") as "avg_temp",ROWTIME,"sender"
FROM "SOURCE_SQL_STREAM_001"
GROUP BY "sender",STEP("SOURCE_SQL_STREAM_001".ROWTIME BY INTERVAL '60' SECOND)
having AVG("temperature")>=27;
Он выдает среднее значение температуры и отправляет его в лямбда-функцию.
Эта функция просто подключается к IoT Core и отправляет сообщение по теме. Кондиционер подписан на эту же тему, ожидая сообщения о включении или выключении.
Проблема
Почти все работает нормально, проблема в том, что даже если запрос дает только один результат в минуту, функция Lambda получает его чаще, чем раз в минуту, как вы можете видеть на снимке экрана ниже:
Лямбда-код аналогичен шаблону вывода Kinesis.