У меня есть AWS Lambda, которая публикует данные в теме A AWS IOT и ожидает результата, который будет опубликован в другой теме B.

Мне было интересно, как получить эти данные из темы B, когда вещь публикует их в уже запущенной лямбде.

Мне не удалось найти эквивалент get_thing_shadow для конкретной темы https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iot-data.html#id4

< Сильный > Например :

Lambda1 -> IOT, Тема A -> Thing

Лямбда1 ждет

Вещь -> IOT, Тема B

Lambda1 читает из темы B, а обновления говорят, что DB и умирает.

Мне было интересно, как это можно сделать.

По некоторым причинам мы больше не можем использовать IOT Shadow.

Текущая архитектура:

Lambda1 -> Желаемая тень IOT -> Вещь

Lambda1 -> ждет 5 секунд

Lambda1 -> читает IOT Shadow Reported -> успех или неудача

Если сбой Lambda1 -> сбрасывает IOT Desired в старое состояние -> существует

0
tharun 23 Окт 2018 в 16:46

2 ответа

Лучший ответ

Невозможно настроить IoT для отправки нового сообщения в «уже запущенную» Lambda. Он всегда будет запускать новый вызов лямбда-функции. Разве предыдущее состояние уже не отображается в сообщении «Ошибка обновления тени Интернета вещей»? Разве вы не можете просто использовать эти данные в новом вызове для выполнения любых обновлений БД или всего, что вам нужно?

0
Mark B 23 Окт 2018 в 14:19

AWS sdk для лямбда-выражения (например, boto3 для python) не поддерживает тему подписки. Поддерживает только тему публикации.

Если вы хотите подписаться на тему, вы должны использовать SDK устройства (см. https://docs.aws.amazon.com /iot/latest/developerguide/iot-sdks.html)

А затем вы можете опубликовать и подписаться с помощью SDK устройства в лямбде.

Если вы не хотите использовать SDK устройства, вам нужно использовать redis или DynamoDB, как показано ниже.

Ответное сообщение публикации устройства -> Правило AWS IoT запускает какое-либо действие (например, запись в БД) -> БД лямбда-опроса.

0
chun geun yu 1 Фев 2019 в 06:08
52950701