Вопросы по лямбда-функции java greengrass

Я новичок в базовом приложении Greengrass и закончил настройку демо, следуя руководству по разработке Greengrass. но я все еще не понимаю, как работает лямбда-функция. Ниже приведены вопросы, которые я хочу попросить о помощи.

Я хочу запустить лямбда-функцию в моем raspberry pi 3 в качестве ядра greengrass, которое может получать сообщения MQTT от нескольких IoT-устройств и выполнять некоторый процесс в соответствии с заданием tpye (т. Е. Различными алгоритмами фильтрации сигналов или домашнего обучения машинного обучения). После этого мне нужно отправить информацию с помощью MQTT на мой собственный сервер (не в облаке AWS IoT) для обработки более высокого уровня с некоторыми темами.

у меня следующие вопросы (я хочу использовать язык JAVA): 1 Чтобы получить несколько устройств aws iot, подключенных к GGC, нужно ли мне устанавливать AWSIoTMQTTClient в aws-iot-device-sdk-java? Я также нахожу в aws_greengrass_core_sdk_java класс IotDataClient, для чего он нужен, и чем отличается AWSIoTMQTTClient. Здесь действительно очень запутанно, даже с описанием документа SDK.

2 В GGC, когда я развернул свою лямбда-функцию, будет ли у нее внутренний брокер MQTT для приема сообщений для AWSIoTMQTTClient?

3 для лямбда-функций, после создания и развертывания на GGC, он начнет работать. Я видел, что есть метод для вызова другой лямбда-функции из лямбда-функции. Я не понимаю механизм, как работает лямбда.

4 Могу ли я иметь несколько лямбда-функций для разных uage, например, одна предназначена только для приема сообщений MQTT, другая для обработки полученной информации, другая для отправки обработанной информации на мой собственный сервер MQTT? если разрешено, как сделать совместную работу для выполнения всех задач.

5 Я видел, что в интерфейс лямбды вводится событие, как я могу вызвать лямбду, только когда какая-то конкретная тема поступила в AWSIoTMQTTClient, определенный в функции лямбда?

6 ниже приведен шаблон лямбда-интерфейса JAVA: имя обработчика outputType(inputType input, Context context) { ... } я думаю, что это должно позволить пользователю определять тип входных данных по мере необходимости. но вопрос в том, если я определю inputtype - это строка. как к лямбда-обработчику получить строку. Руководство по разработке не имеет четкого описания.

7 Наконец, не могли бы вы поделиться демо-кодами для вышеуказанных вопросов?

Спасибо за внимание и добрую помощь заранее. ваша помощь очень ожидается

1 ответ

AWSIoTMQTTClient из SDK устройства не предназначен для функций Greengrass Lambda. Вместо этого используйте IotDataClient из Greengrass Java SDK, создайте запрос на публикацию и затем вызовите метод публикации. Вот пример этого здесь - https://github.com/aws-samples/aws-greengrass-lambda-functions/blob/master/foundation/CDDBaselineJava/src/main/java/com/timmattison/greengrass/cdd/communication/GreengrassCommunication.java

AWSIoTMQTTClient предназначен для устройств / приложений, работающих за пределами Greengrass.

Если вы хотите увидеть пример кода функции Greengrass Lambda в Java, посмотрите хотя бы на этот пример скелета - https://github.com/aws-samples/aws-greengrass-lambda-functions/tree/master/functions/CDDSkeletonJava, Обратите внимание, что эта и другие функции в репозитории зависят от платформы, называемой CDD (Cloud Device Driver). Он используется в одном репо и выполняет большую часть тяжелой работы (обмен сообщениями, запуск и т. Д.). Это в сочетании с провайдером Greengrass - https://github.com/awslabs/aws-greengrass-provisioner - дает вам быстрый способ разработки функций Java на Greengrass. Дай мне знать, если попробуешь.

Если вы хотите увидеть внутренности CDD, его корень здесь - https://github.com/aws-samples/aws-greengrass-lambda-functions/tree/master/foundation/CDDBaselineJava

Что касается функций Lambda и их краткого запуска, я скажу, что они могут работать по требованию (когда они получают сообщение), или они могут работать "закрепленными" (навсегда). Закрепленные функции могут получать сообщения тоже. Закрепленные функции хороши, когда вам нужно отследить какое-то состояние. Функции по запросу более эффективны для обработки данных без сохранения состояния.

Другие вопросы по тегам