Обработка сообщений AWS IoT с помощью функций Lambda - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь разработать лямбда-функцию в C # для обработки и преобразования данных, которые я получаю от ядра IoT AWS, так же, как я делал, например, с данными из DynamoDB, S3 или SQS.

Что я хотел бы знать, так это то, что я должен обязательно подписаться на тему, трансформировать каждое сообщение и, наконец, отправлять его на s3, DyanmoDB или что-либо еще, или я могу получить прямой доступ к этим данным без подписки.

Код:

 var CaCert = X509Certificate.CreateFromCertFile(@"C:\...\rootCA.pem");
                var clientCert = new X509Certificate2(@"C:\...\amazon.pfx");
                string ClientID = Guid.NewGuid().ToString();


                var IotClient = new MqttClient(IotEndPoint, BrokerPort, true, CaCert, clientCert, MqttSslProtocols.TLSv1_2);
                IotClient.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;

                IotClient.Connect(ClientID);
                Console.WriteLine("Connected to IoT Core. Waiting for the frames...");
                IotClient.Subscribe(new string[] { topic }, new byte[] { MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE });

1 Ответ

0 голосов
/ 22 октября 2018

Вы должны подписаться на тему (ы) для доступа к данным.Однако вы можете просто написать выражение SQL для подписки на тему, чтобы использовать подстановочный знак, например , этот пример из официальной документации , чтобы избежать необходимости подписываться на каждую отдельную тему:

Вы можете использоватьсимвол подстановки # для соответствия любому подпутю в фильтре темы:

Пример:

Поступающая полезная нагрузка, опубликованная в теме 'a / b': {температура: 50}.

Поступающая полезная нагрузка, опубликованная в теме 'a / c': {температура: 60}.

Поступающая полезная нагрузка, опубликованная в теме 'a / e / f': {температура: 70}.

Поступающая полезная нагрузкаопубликовано по теме 'b / x': {температура: 80}.

SQL: "ВЫБЕРИТЕ температуру КАК ОТ" a /#'".

Правило подписывается на любое начало темыс 'a', поэтому он выполняется три раза, посылая исходящие полезные данные {t: 50} (для a / b), {t: 60} (для a / c) и {t: 70} (для a /е / е) своим действиям.Он не подписан на 'b / x', поэтому правило не будет срабатывать для сообщения {температура: 80}.

...