Använda Azure Functions för att filtrera data vid gränsen

Slutförd

Om du vill minska mängden telemetri som skickas till ditt IoT Central-program vill du filtrera data på din IoT Edge-enhet innan den skickas.

För att minska kostnaderna för att skicka telemetri från dina butiker till ditt program och för att säkerställa att operatörerna bara ser viktiga data, vill du filtrera data på IoT Edge-enheten. Du har fastställt att operatorerna bara behöver se telemetri när omgivningstemperaturen är över 21°C.

Här får du lära dig hur du använder Azure Functions som en modul på din IoT Edge-enhet för att implementera filtret. Du kommer också att granska hur du uppdaterar distributionsmanifestet till ditt IoT Central-program, så att IoT Edge-enheter som är anslutna till ditt IoT Central-program laddar ned det och uppdaterar modulerna på enheten.

Vad är Azure Functions?

Azure Functions är en tjänst som gör att du kan köra små delar av koden, som kallas funktioner, utan att behöva bekymra dig om programinfrastrukturen. Med Azure Functions tillhandahåller molninfrastrukturen alla uppdaterade servrar som du behöver för att hålla programmet igång i stor skala.

Du kan också använda Azure Functions för att distribuera en funktion till din IoT Edge-enhet som en modul så att funktionen körs lokalt, vid gränsen, i stället för i molnet.

Du planerar att implementera filtret med hjälp av Azure Functions för att köras som en av modulerna på din IoT Edge-enhet. Det här filtret begränsar mängden telemetri för datortemperatur som skickas till ditt IoT Central-program.

Så här skapar du en IoT Edge-modul som innehåller en funktion

Du kan använda flera språk för att skapa en funktion för Azure Functions. Följande steg beskriver hur du skapar en IoT Edge-modul som innehåller en funktion som implementeras i C#:

  1. Skapa ett projekt som innehåller scaffolding för en Azure-funktionsmodul. Du kan skapa ett sådant projekt med hjälp av Visual Studio Code eller på kommandoraden med hjälp av dotnet kommandot .
  2. Implementera affärslogik för funktionen i C#.
  3. Skapa projektet för att generera en Docker-avbildning som innehåller funktionen och nödvändig Azure Functions-körning.
  4. Ladda upp Docker-avbildningen till ett containerregister.
  5. Ändra distributionsmanifestet för din IoT Edge-enhet så att den innehåller den nya modulen. Konfigurationen innehåller adressen till Docker-avbildningen och hur funktionsmodulen interagerar med andra moduler i IoT Edge-körningen.

Följande kodfragment visar modules avsnittet med den nya filterfunction modulen i det uppdaterade distributionsmanifestet:

"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": ""
    }
  }
}

Beroende på vilket containerregister du använder och dess konfiguration kan distributionsmanifestet behöva innehålla autentiseringsuppgifter för att få åtkomst till registret.

Följande kodfragment visar hur telemetrin dirigeras mellan modulerna i det uppdaterade distributionsmanifestet:

"routes": {
    "FilterFunctionToIoTCentral": "FROM /messages/modules/filterfunction/outputs/* INTO $upstream",
    "sensorToFilterFunction": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/filterfunction/inputs/input1\")"
  },

Uppdatera distributionsmanifestet i IoT Central

Om du vill distribuera den nya modulen till din IoT Edge-enhet uppdaterar du distributionsmanifestet till ditt IoT Central-program. När du uppdaterar ett distributionsmanifest som detta laddar IoT Edge-enheterna som är anslutna till ditt IoT Central-program ned det och uppdaterar modulerna på enheten.

Använda Azure Functions på gränsen

1.

Var kan du köra en Azure-funktion?

2.

Vilken roll har routning i ett distributionsmanifest?