빠른 시작: Windows 디바이스에 첫 번째 IoT Edge 모듈 배포

적용 대상:IoT Edge 1.4 확인 표시 IoT Edge 1.4

Important

IoT Edge 1.4는 지원되는 릴리스입니다. 이전 릴리스에 있는 경우 IoT Edge 업데이트를 참조하세요.

컨테이너화된 코드를 Windows IoT Edge 디바이스의 Linux에 배포하여 이 빠른 시작에서 Azure IoT Edge를 사용해보세요. IoT Edge를 사용하면 디바이스에서 코드를 원격으로 관리하여 더 많은 워크로드를 에지로 전송할 수 있습니다. 이 빠른 시작에서는 Windows의 Linux용 Azure IoT Edge를 사용하는 것이 얼마나 쉬운지 확인하기 위해 자체 Windows 클라이언트 디바이스를 사용하는 것이 좋습니다. Windows Server 또는 Azure VM을 사용하여 배포판을 만들려면 Windows 디바이스에 Linux용 Azure IoT Edge 설치 및 프로비전에 관한 방법 가이드의 단계를 따르세요.

이 빠른 시작에서 다음을 수행하는 방법을 알아봅니다.

  • IoT Hub를 만듭니다.
  • IoT Edge 디바이스를 IoT Hub에 등록합니다.
  • 디바이스에 Windows의 Linux용 IoT Edge 런타임을 설치하고 시작합니다.
  • 원격으로 모듈을 IoT Edge 디바이스에 배포하고 원격 분석을 전송합니다.

디바이스와 클라우드에 대한 이 빠른 시작의 아키텍처를 보여주는 다이어그램

이 빠른 시작에서는 Windows 디바이스에서 Linux용 Azure IoT Edge를 설정하는 방법에 대해 설명합니다. 그런 다음, Azure Portal에서 디바이스로 모듈을 배포합니다. 여기서 사용하는 모듈은 온도, 습도 및 압력 데이터를 생성하는 시뮬레이션된 센서입니다. 다른 Azure IoT Edge 자습서는 비즈니스 인사이트를 획득하기 위해 시뮬레이션된 데이터를 분석하는 모듈을 배포하는 과정을 설명하므로 여기서 수행하는 작업을 토대로 진행됩니다.

활성 Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만드세요.

필수 조건

Azure CLI에 대한 환경을 준비합니다.

이 빠른 시작에서 사용할 모든 리소스를 관리하는 클라우드 리소스 그룹을 만듭니다.

az group create --name IoTEdgeResources --location westus2

IoT Edge 디바이스가 다음 요구 사항을 충족하는지 확인합니다.

  • 시스템 요구 사항

    • Windows 101/11(Pro, Enterprise, IoT Enterprise)1 Windows 10 최소 빌드 17763(모든 최신 누적 업데이트 설치).
  • 하드웨어 요구 사항

    • 사용 가능한 최소 메모리: 1GB
    • 사용 가능한 최소 디스크 공간: 10GB

IoT Hub 만들기

먼저 Azure CLI를 사용하여 IoT 허브를 만듭니다.

IoT 허브를 만드는 단계를 보여주는 다이어그램

이 빠른 시작에서는 무료 Azure IoT Hub가 작동합니다. 이전에 IoT Hub를 사용했고 이미 만든 허브가 있으면 해당 IoT 허브를 사용할 수 있습니다.

다음 코드는 리소스 그룹 IoTEdgeResources에 체험 F1 허브를 만듭니다. {hub_name}을 IoT 허브의 고유한 이름으로 바꿉니다. IoT Hub를 만드는 데 몇 분 정도 걸릴 수 있습니다.

az iot hub create --resource-group IoTEdgeResources --name {hub_name} --sku F1 --partition-count 2

구독에 이미 한 개의 무료 허브가 있기 때문에 오류가 발생하는 경우 SKU를 S1으로 변경합니다. IoT 허브 이름을 사용할 수 없다는 오류가 발생할 경우 다른 사용자에게 해당 이름의 허브가 이미 있는 것입니다. 새 이름을 사용해 보세요.

IoT Edge 디바이스 등록

새로 만든 IoT Hub에 IoT Edge 디바이스를 등록합니다.

IoT 허브 ID로 디바이스를 등록하는 단계를 보여 주는 다이어그램

IoT Hub와 통신할 수 있도록, 시뮬레이트된 디바이스의 디바이스 ID를 만듭니다. 디바이스 ID는 클라우드에 있으며, 사용자는 고유한 디바이스 연결 문자열을 사용하여 물리적 디바이스를 디바이스 ID에 연결합니다.

IoT Edge 디바이스는 일반적인 IoT 디바이스와 다르게 작동하며 다른 방법으로 관리할 수 있습니다. --edge-enabled 플래그를 사용하여 이 ID를 IoT Edge 디바이스용으로 선언합니다.

  1. Azure Cloud Shell에서 다음 명령을 입력하여 myEdgeDevice라는 디바이스를 허브에 만듭니다.

    az iot hub device-identity create --device-id myEdgeDevice --edge-enabled --hub-name {hub_name}
    

    iothubowner 정책 키에 대한 오류가 발생할 경우 Cloud Shell에서 최신 버전의 Azure IoT 확장이 실행 중인지 확인합니다.

  2. IoT Hub에서 물리적 디바이스를 해당 ID에 연결하는 디바이스의 연결 문자열을 확인합니다. 연결 문자열에는 IoT 허브 이름, 디바이스 이름 및 둘 간의 연결을 인증하는 공유 키가 포함됩니다.

    az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name {hub_name}
    
  3. JSON 출력에서 connectionString 키를 복사하여 저장합니다. 이 값이 디바이스 연결 문자열입니다. 다음 섹션에서 이 값을 사용하여 IoT Edge 런타임을 구성할 것입니다.

    예를 들어 연결 문자열은 HostName=contoso-hub.azure-devices.net;DeviceId=myEdgeDevice;SharedAccessKey=<DEVICE_SHARED_ACCESS_KEY>와 유사할 수 있습니다.

IoT Edge 런타임 설치 및 시작

디바이스에 Windows의 Linux용 IoT Edge를 설치하고 디바이스 연결 문자열로 디바이스를 구성합니다.

IoT Edge 런타임을 시작하는 단계를 보여 주는 다이어그램

Windows에서 Linux용 Azure IoT Edge를 배포하려는 대상 디바이스에서 다음 PowerShell 명령을 실행합니다. PowerShell을 사용하여 원격 대상 디바이스에 배포하려면 Remote PowerShell을 사용하여 원격 디바이스에 대한 연결을 설정하고 해당 디바이스에서 이러한 명령을 원격으로 실행합니다.

  1. 관리자 권한 PowerShell 세션에서 다음 명령을 실행하여 Hyper-V를 사용하도록 설정합니다. 자세한 내용은 Windows 10의 Hyper-V를 참조하세요.

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
    
  2. 관리자 권한 PowerShell 세션에서 다음 명령을 각각 실행하여 IoT Edge for Linux on Windows를 다운로드합니다.

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
      
  3. IoT Edge for Linux on Windows를 디바이스에 설치합니다.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    
  4. 대상 디바이스의 실행 정책이 아직 설정되지 않은 경우 AllSigned로 설정합니다. 다음을 사용하여 관리자 권한 PowerShell 프롬프트에서 현재 실행 정책을 확인할 수 있습니다.

    Get-ExecutionPolicy -List
    

    local machine의 실행 정책이 AllSigned가 아닌 경우 다음을 사용하여 실행 정책을 설정할 수 있습니다.

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    
  5. IoT Edge for Linux on Windows 배포를 만듭니다.

    Deploy-Eflow
    
  6. 'Y'를 입력하여 사용 조건에 동의합니다.

  7. 기본 설정에 따라 'O' 또는 'R'을 입력하여 선택적 진단 데이터를 설정하거나 해제합니다. 성공적인 배포는 다음과 같습니다.

    배포가 성공하면 콘솔의 메시지 끝에 배포 성공이 표시됨을 보여 주는 스크린샷

  8. 이전 섹션에서 검색한 디바이스 연결 문자열을 사용하여 디바이스를 프로비전합니다. 자리 표시자 텍스트를 고유한 값으로 바꿉니다.

    Provision-EflowVm -provisioningType ManualConnectionString -devConnString "<CONNECTION_STRING_HERE>"
    

IoT Edge 디바이스가 구성되었습니다. 클라우드 배포 모듈을 실행할 준비가 되었습니다.

모듈 배포

클라우드에서 Azure IoT Edge 디바이스를 관리하여 원격 분석 데이터를 IoT Hub로 보내는 모듈을 배포합니다.

모듈을 배포하는 단계를 보여주는 다이어그램

Azure IoT Edge의 주요 기능 중 하나는 클라우드의 IoT Edge 디바이스에 코드를 배포하는 것입니다. IoT Edge 모듈은 컨테이너로 구현된 실행 패키지입니다. 이 섹션에서는 Azure IoT Hub에서 직접 Azure Marketplace의 IoT Edge 모듈 섹션에서 미리 빌드된 모듈을 배포합니다.

이 섹션에서 배포하는 모듈은 센서를 시뮬레이션하고 생성된 데이터를 보냅니다. 이 모듈은 시뮬레이션된 데이터를 개발 및 테스트에 사용할 수 있으므로 IoT Edge를 시작할 때 유용한 코드 조각입니다. 시뮬레이션된 온도 센서 소스 코드를 보면 이 모듈이 하는 일을 정확하게 이해할 수 있습니다.

Azure Marketplace에서 첫 번째 모듈을 배포하려면 다음 단계를 수행합니다.

  1. Azure Portal에 로그인하고 IoT 허브로 이동합니다.

  2. 왼쪽 창 메뉴의 디바이스 관리 메뉴에서 디바이스를 선택합니다.

  3. 디바이스 목록에서 대상 디바이스의 디바이스 ID를 선택합니다.

    참고 항목

    새 IoT Edge 디바이스를 만들면 Azure Portal에 상태 코드 417 -- The device's deployment configuration is not set이 표시됩니다. 이 상태는 정상이며 디바이스가 모듈 배포를 수신할 준비가 되었음을 의미합니다.

  4. 위쪽 막대에서 모듈 설정을 선택합니다.

    디바이스에서 실행할 모듈을 선택합니다. 이미 만든 모듈, Azure Marketplace의 모듈 또는 직접 빌드한 모듈 중에서 선택할 수 있습니다. 이 빠른 시작에서는 Azure Marketplace의 모듈을 배포합니다.

  5. IoT Edge 모듈에서 추가 드롭다운 메뉴를 연 다음, Marketplace 모듈을 선택합니다.

  6. IoT Edge Module Marketplace에서 Simulated Temperature Sensor 모듈을 검색하여 선택합니다. 모듈이 원하는 실행 중 상태인 IoT Edge 모듈 섹션에 추가됩니다.

  7. 다음: 경로를 선택하여 경로 구성을 계속합니다.

    Azure Marketplace에서 모듈을 추가하면 'SimulatedTemperatureSensorToIoTHub'라는 경로가 자동으로 만들어집니다. 이 경로는 시뮬레이션된 온도 모듈의 모든 메시지를 IoT Hub로 보냅니다.

  8. 완료되면 다음: 리뷰 + 만들기를 클릭합니다.

  9. JSON 파일을 검토한 다음, 만들기를 선택합니다. JSON 파일은 IoT Edge 디바이스에 배포하는 모든 모듈을 정의합니다.

    참고 항목

    IoT Edge 디바이스에 새 배포를 제출할 때는 디바이스에 아무것도 푸시되지 않습니다. 대신 디바이스가 IoT Hub에 새로운 지침이 있는지를 정기적으로 쿼리합니다. 디바이스는 업데이트된 배포 매니페스트를 찾으면 새 배포에 대한 정보를 사용하여 클라우드에서 모듈 이미지를 끌어온 다음, 모듈을 로컬로 실행하기 시작합니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다.

모듈 배포 세부 정보를 만들면 마법사는 디바이스 세부 정보 페이지로 돌아갑니다. 모듈 탭에서 배포 상태를 확인합니다.

세 가지 모듈 즉, $edgeAgent, $edgeHubSimulatedTemperatureSensor가 나열됩니다. 하나 이상의 모듈에 배포에서 지정됨 아래 가 있지만, 디바이스에서 보고됨 아래에는 없는 경우, IoT Edge 디바이스가 계속 모듈을 시작하고 있는 것입니다. 몇 분 기다렸다가 페이지를 새로 고칩니다.

배포된 모듈 목록에서 SimulatedTemperatureSensor를 보여 주는 스크린샷

모듈 배포에 문제가 있는 경우 Azure Portal에서 IoT Edge 디바이스 문제 해결을 참조하세요.

생성된 데이터 보기

이 빠른 시작에서는 새 IoT Edge 디바이스를 만들고 여기에 IoT Edge 런타임을 설치했습니다. 그런 다음, 디바이스 자체를 변경하지 않고도 디바이스에서 실행할 수 있도록 Azure Portal을 사용하여 IoT Edge 모듈을 배포했습니다.

여기서 푸시한 모듈은 나중에 테스트에 사용할 수 있는 샘플 환경 데이터를 생성합니다. 시뮬레이션된 센서는 머신과 머신 주변의 환경을 모니터링합니다. 예를 들어 이 센서가 서버실, 공장 또는 풍력 터빈에 장착될 수 있습니다. 센서에서 보내는 메시지에는 주변 온도 및 습도, 머신 온도 및 압력, 타임스탬프가 포함됩니다. IoT Edge 자습서는 이 모듈에서 만든 데이터를 분석용 테스트 데이터로 사용합니다.

  1. PowerShell 세션에서 다음 명령을 사용하여 IoT Edge for Linux on Windows 가상 머신에 로그인합니다.

    Connect-EflowVm
    

    참고 항목

    가상 머신에 SSH로 연결하도록 허용되는 유일한 계정은 가상 머신을 만든 사용자입니다.

  2. 로그인하면 다음 Linux 명령을 사용하여 실행되는 IoT Edge 모듈의 목록을 확인할 수 있습니다.

    sudo iotedge list
    

    온도 센서, 에이전트 및 허브 모듈이 실행 중인지 확인하는 위치를 보여 주는 스크린샷

  3. 다음 Linux 명령을 사용하여 온도 센서 모듈에서 클라우드로 전송되는 메시지를 봅니다.

    sudo iotedge logs SimulatedTemperatureSensor -f
    

    실행 중인 시뮬레이션된 온도 센서 모듈의 출력 로그를 보여 주는 스크린샷

    IoT Edge 명령은 모듈 이름을 참조할 때 대/소문자를 구분합니다.

리소스 정리

IoT Edge 자습서를 계속 진행하려는 경우에는 이 단계를 건너뜁니다. 이 빠른 시작에서 등록하고 설정한 디바이스를 계속 사용할 수 있습니다. 그렇지 않으면 요금이 발생하지 않도록 Azure 리소스를 삭제할 수 있습니다.

새 리소스 그룹에서 가상 머신 및 IoT 허브를 만든 경우 해당 그룹 및 모든 관련 리소스를 삭제할 수 있습니다. 전체 그룹을 삭제하지는 않으려는 경우 대신, 개별 리소스를 삭제할 수 있습니다.

Important

리소스 그룹의 콘텐츠를 확인하여 유지할 내용이 없는지 검토합니다. 리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다.

다음 명령을 사용하여 IoTEdgeResources 그룹을 제거합니다. 삭제하는 데 몇 분 정도 걸릴 수 있습니다.

az group delete --name IoTEdgeResources

이 명령으로 리소스 그룹 목록을 보면 리소스 그룹이 제거되었는지 확인할 수 있습니다.

az group list

IoT Edge for Linux on Windows 제거

디바이스에서 Azure IoT Edge for Linux on Windows 설치를 제거하려면 다음 명령을 사용합니다.

  1. Windows에서 설정 열기
  2. 프로그램 추가/제거 선택
  3. Azure IoT Edge 앱 선택
  4. 제거 선택

다음 단계

이 빠른 시작에서는 새 IoT Edge 디바이스를 만들고 Azure IoT Edge 클라우드 인터페이스를 사용하여 디바이스에 코드를 배포했습니다. 이제 해당 환경에 대한 원시 데이터를 생성하는 테스트 디바이스가 준비되었습니다.

다음 자습서에서는 Azure Portal에서 디바이스의 활동 및 상태를 모니터링하는 방법을 배웁니다.