使用 Azure Functions 在邊緣篩選資料

已完成

為了減少傳送至 IoT Central 應用程式的遙測量,您想要在傳送前先篩選 IoT Edge 裝置上的資料。

為了降低將遙測資料從商店傳送至應用程式的相關成本,並確保操作員只會看到您想要在 IoT Edge 裝置上篩選資料的重要資料。 您已決定操作員只有在環境溫度超過 21°C 時,才必須查看遙測。

在此,您將了解如何使用 Azure Functions 作為 IoT Edge 裝置上的模組,以實作篩選。 您也會檢閱如何將部署資訊清單更新至 IoT Central 應用程式,如此連線到 IoT Central 應用程式的 IoT Edge 裝置會下載該清單,並更新裝置上的模組。

什麼是 Azure Functions?

Azure Functions 是一項服務,可讓您執行一小段程式碼,稱為函數,而不需擔心應用程式基礎結構。 透過 Azure Functions,雲端基礎結構可為您提供大規模持續執行應用程式所需的所有最新伺服器。

您也可以使用 Azure Functions 將函數部署至 IoT Edge 裝置作為模組,以使函數在本機執行,而不是在雲端中執行。

您計畫使用 Azure Functions,以 IoT Edge 裝置上其中一個模組的形式來實作篩選。 此篩選會限制傳送至 IoT Central 應用程式的機器溫度遙測量。

如何建立包含函數的 IoT Edge 模組

您可以使用多種語言來建立 Azure Functions 的函數。 下列步驟概述如何建立包含在 C# 中實作函數的 IoT Edge 模組:

  1. 建立專案,其中包含 Azure Function 模組的樣板。 您可以使用 Visual Studio Code,或在命令列使用 dotnet 命令來建立這類專案。
  2. 在 C# 中實作函數的商務邏輯。
  3. 建立專案以產生 Docker 映像,其中包含函數和必要的 Azure Functions 執行時間。
  4. 將 Docker 映像上傳至容器登錄。
  5. 修改 IoT Edge 裝置的部署資訊清單,以包含新的模組。 設定包含 Docker 映像的位址,以及函數模組如何與 IoT Edge 執行階段中的其他模組互動。

下列程式碼片段會顯示已更新部署資訊清單中新 filterfunction 模組的區段 modules

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

根據您所使用的容器登錄及其設定而定,您的部署資訊清單可能需要包含用來存取登錄的認證。

下列程式碼片段說明如何在已更新部署資訊清單中的模組之間路由傳送遙測:

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

更新 IoT Central 中的部署資訊清單

若要將新模組部署到 IoT Edge 裝置,請將部署資訊清單更新至 IoT Central 應用程式。 當您如下所示更新部署資訊清單時,連線到 IoT Central 應用程式的 IoT Edge 裝置會下載該清單,並更新裝置上的模組。

在邊緣使用 Azure Functions

1.

您可以在哪裡執行 Azure 函數?

2.

路由在部署資訊清單中的角色為何?