#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. Вам нужно убрать ‘ ‘ и заменить его именем конкретного устройства, которое вас интересует.