Запуск лямбда-кода при обновлении теневого устройства

#aws-lambda #aws-iot

#aws-lambda #aws-iot

Вопрос:

Я установил правило

 SELECT * FROM '$aws/things/ /shadow/update/accepted'
  

Это правило запускает мою лямбда-функцию при обновлении тени любого элемента в моем AWS IoT.

Вместо этого я хочу, чтобы оно запускалось только при обновлении теней некоторых объектов, а не всех из них. Как я могу это сделать?

Ответ №1:

Недавно я узнал, что вы можете использовать функции для фильтрации по частям темы, и что-то подобное потенциально может сработать для вас:

 SELECT *
FROM '$aws/things/ /shadow/update/accepted'
WHERE startswith(topic(3), 'someprefix-')
  

Это вызвало бы действие (ы) только тогда, когда часть темы, захваченная , начиналась с «someprefix-«. Вы можете использовать другие функции для фильтрации другими способами, если префикс вам не подходит.

Ответ №2:

У каждого зарегистрированного вами отдельного устройства будет определенная тема / shadow / update / accepted, на которую вы можете подписаться. Это должно быть просто, например, заменить » » в вашей теме на название устройства.

Эта же тема также указана в разделе «Взаимодействие» каждого устройства в IoT Core.

Комментарии:

1. Спасибо за ответ, хотя, как вы можете видеть выше, в моем правиле уже есть знак » » в ссылке SQL. Он запускает мою Лямбду всякий раз, когда обновляется какое-либо устройство в моем AWS IoT. Я хочу, чтобы то же самое происходило только для некоторых устройств в моем AWS IoT, а не для всех.

2. Вам нужно убрать ‘ ‘ и заменить его именем конкретного устройства, которое вас интересует.