Uso de Azure Functions para filtrar datos en el perímetro
Para reducir la cantidad de telemetría enviada a la aplicación de Azure IoT Central, quiere filtrar los datos en el dispositivo IoT Edge antes de enviarlos.
Para reducir los costos asociados al envío de telemetría desde los almacenes a la aplicación, quiere filtrar los datos en el dispositivo IoT Edge. Esto también ayuda a garantizar que los operadores solo vean datos importantes. Ha determinado que los operadores solo necesitan ver la telemetría cuando la temperatura ambiente es superior a 21°C.
Aquí aprenderá a usar Azure Functions como módulo en el dispositivo IoT Edge para implementar el filtro. También puede revisar cómo actualizar el manifiesto de implementación a la aplicación de Azure IoT Central. A continuación, los dispositivos IoT Edge que están conectados a la aplicación de Azure IoT Central lo descargan y actualizan los módulos en el dispositivo.
¿Qué es Azure Functions?
Azure Functions es un servicio que permite ejecutar pequeños fragmentos de código, denominados funciones, sin preocuparse por la infraestructura de la aplicación. Con Azure Functions, la infraestructura de la nube proporciona todos los servidores actualizados que necesita para mantener la aplicación en ejecución a gran escala.
También puede usar Azure Functions para implementar una función en el dispositivo de IoT Edge como módulo para que la función se ejecute localmente, o en el perímetro, en lugar de hacerlo en la nube.
Tiene previsto implementar el filtro mediante Azure Functions para que se ejecute como uno de los módulos en el dispositivo de IoT Edge. Este filtro limita la cantidad de telemetría de temperatura de la máquina enviada a la aplicación de Azure IoT Central.
Creación de un módulo de IoT Edge que contiene una función
Puede usar varios lenguajes para crear una función para Azure Functions. En los pasos siguientes se describe cómo compilar un módulo de IoT Edge que contiene una función implementada en C#:
- Cree un proyecto que incluya el scaffolding para un módulo de Azure Functions. Puede crear un proyecto así con Visual Studio Code, o en la línea de comandos, con el comando
dotnet
. - Implemente la lógica de negocios para la función en C#.
- Compile el proyecto para generar una imagen de Docker que contenga la función y el runtime de Azure Functions necesario.
- Cargue la imagen de Docker en un registro de contenedor.
- Modifique el manifiesto de implementación del dispositivo de IoT Edge para incluir el nuevo módulo. La configuración incluye la dirección de la imagen de Docker y cómo interactúa el módulo de la función con otros módulos del entorno de ejecución de Azure IoT Edge.
El fragmento de código siguiente muestra la sección modules
con el nuevo módulo filterfunction
en el manifiesto de implementación actualizado:
"modules": {
"SimulatedTemperatureSensor": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.4.6",
"createOptions": "{}"
}
},
"filterfunction": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "<YOUR CONTAINER REGISTRY NAME>.azurecr.io/filterfunction:v1",
"createOptions": ""
}
}
}
En función del registro de contenedor que use y su configuración, el manifiesto de implementación podría requerir credenciales para acceder al registro.
El fragmento de código siguiente muestra cómo se enruta la telemetría entre los módulos del manifiesto de implementación actualizado:
"routes": {
"FilterFunctionToIoTCentral": "FROM /messages/modules/filterfunction/outputs/* INTO $upstream",
"sensorToFilterFunction": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/filterfunction/inputs/input1\")"
},
Actualización del manifiesto de implementación en Azure IoT Central
Para implementar el nuevo módulo en el dispositivo IoT Edge, actualice el manifiesto de implementación a la aplicación de Azure IoT Central. Al actualizar un manifiesto de implementación como este, los dispositivos IoT Edge que están conectados a la aplicación de Azure IoT Central lo descargan y actualizan los módulos del dispositivo.