Azure Functions를 사용하여 에지에서 데이터 필터링

완료됨

IoT Central 응용 프로그램으로 전송되는 원격 분석의 양을 줄이기 위해, IoT Edge 디바이스의 데이터를 전송하기 전에 필터링하려고 합니다.

매장에서 애플리케이션으로 원격 분석을 보내는 것과 관련된 비용을 줄이고 운영자가 중요한 데이터만 보도록 IoT Edge 디바이스에서 데이터를 필터링하려고 합니다. 주변 온도가 21°C를 초과하는 경우에만 운영자가 원격 분석을 볼 필요가 있다고 결정했습니다.

여기서는 IoT Edge 디바이스에서 Azure Functions를 모듈으로 사용하여 필터를 구현하는 방법을 알아봅니다. 또한 IoT Central 애플리케이션에 대한 배포 매니페스트를 업데이트하는 방법을 검토합니다. 이렇게 하면 IoT Central 애플리케이션에 연결된 디바이스가 해당 매니페스트를 다운로드하고 디바이스의 모듈을 업데이트합니다.

Azure Functions란?

Azure Functions은 응용 프로그램 인프라에 대한 걱정 없이 함수라고 하는 작은 코드 조각을 실행할 수 있는 서비스입니다. Azure Functions를 사용하면 클라우드 인프라에서 애플리케이션을 규모에 맞게 실행하는 데 필요한 모든 최신 서버를 제공합니다.

Azure Functions를 사용하여 함수가 클라우드가 아닌 에지에서 로컬로 실행되도록 IoT Edge 디바이스에 모듈으로 함수를 배포할 수도 있습니다.

IoT Edge 디바이스에서 모듈 중 하나로 실행하기 위해, Azure Functions 사용하여 필터를 구현할 계획입니다. 이 필터는 IoT Central 응용 프로그램으로 전송되는 머신 온도 원격 분석의 양을 제한합니다.

함수를 포함하는 IoT Edge 모듈을 생성하는 방법

여러 언어를 사용하여 Azure Functions에 대한 함수를 생성할 수 있습니다. 다음 단계에서는 C#에서 구현된 함수를 포함하는 IoT Edge 모듈을 빌드하는 방법을 간략하게 설명합니다.

  1. Azure Function 모듈에 대한 스캐폴딩을 포함하는 프로젝트를 생성합니다. Visual Studio Code를 사용하거나 명령줄에서 dotnet 명령을 사용하여 해당 프로젝트를 만들 수 있습니다.
  2. C#에서 함수에 대한 비즈니스 논리를 구현합니다.
  3. 함수 및 필요한 Azure Functions 런타임이 포함된 Docker 이미지를 생성하는 프로젝트를 빌드합니다.
  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.

배포 매니페스트에서 라우팅의 역할은 무엇인가요?