적용 대상:
IoT Edge 1.1
중요합니다
IoT Edge 1.1 지원 종료 날짜는2022년 12월 13일이었습니다. 이 제품, 서비스, 기술 또는 API가 지원되는 방법에 대한 정보는 Microsoft 제품 수명 주기를 확인하세요. 최신 버전의 IoT Edge로 업데이트하는 방법에 대한 자세한 내용은 업데이트 IoT Edge참조하세요.
이 문서에서는 Linux를 실행하는 Azure 가상 머신을 투명한 게이트웨이 역할을 하는 Azure IoT Edge 디바이스로 구성합니다. 투명한 게이트웨이 구성을 사용하면 디바이스가 게이트웨이가 존재하는지 모르고 게이트웨이를 통해 Azure IoT Hub에 연결할 수 있습니다. 동시에 IoT Hub에서 디바이스와 상호 작용하는 사용자는 중간 게이트웨이 디바이스를 인식하지 못합니다. 궁극적으로 투명 게이트웨이에 IoT Edge 모듈을 추가하여 시스템에 에지 분석을 추가합니다.
비고
이 자습서의 개념은 모든 버전의 IoT Edge에 적용되지만 시나리오를 사용해 보기 위해 만든 샘플 디바이스는 IoT Edge 버전 1.1을 실행합니다.
이 문서의 단계는 일반적으로 클라우드 개발자가 수행합니다.
자습서의 이 섹션에서는 다음 방법을 알아봅니다.
- 게이트웨이 디바이스가 다운스트림 디바이스에 안전하게 연결할 수 있도록 인증서를 만듭니다.
- IoT Edge 디바이스를 만듭니다.
- IoT Edge 디바이스를 시뮬레이션하는 Azure 가상 머신을 만듭니다.
필수 조건
이 문서는 IoT Edge에서 Azure Machine Learning을 사용하는 방법에 대한 자습서 시리즈의 일부입니다. 시리즈의 각 문서는 이전 문서의 작업을 기반으로 합니다. 이 문서에 직접 도착한 경우, 시리즈의 첫 번째 문서 를 참조하세요.
인증서 만들기
디바이스가 게이트웨이로 작동하려면 다운스트림 디바이스에 안전하게 연결해야 합니다. IoT Edge를 사용하면 PKI(공개 키 인프라)를 사용하여 디바이스 간에 보안 연결을 설정할 수 있습니다. 이 경우 다운스트림 IoT 디바이스가 투명한 게이트웨이 역할을 하는 IoT Edge 디바이스에 연결할 수 있습니다. 적절한 보안을 유지하기 위해 다운스트림 디바이스는 IoT Edge 디바이스의 ID를 확인해야 합니다. IoT Edge 디바이스에서 인증서를 사용하는 방법에 대한 자세한 내용은 Azure IoT Edge 인증서 사용량 세부 정보참조하세요.
이 섹션에서는 빌드하고 실행하는 Docker 이미지를 사용하여 자체 서명된 인증서를 만듭니다. Windows 개발 컴퓨터에서 인증서를 만드는 데 필요한 단계 수가 줄어들기 때문에 Docker 이미지를 사용하여 이 단계를 완료하도록 선택했습니다. Docker 이미지로 자동화된 기능을 이해하려면 데모 인증서 만들기를 참조하여IoT Edge 디바이스 기능을 테스트합니다.
개발 VM에 로그인합니다.
경로와 이름이 c:\edgeCertificates인 새 폴더를 만드세요.
아직 실행되지 않은 경우 Windows 시작 메뉴에서 Windows용 Docker 시작합니다.
Visual Studio Code를 엽니다.
파일>열기 폴더을 선택하고, 그런 다음 C:\source\IoTEdgeAndMlSample\CreateCertificates을 선택합니다.
탐색기 창의 dockerfile를 마우스 오른쪽 버튼으로 클릭하고 이미지를 빌드를 선택합니다.
대화 상자에서 이미지 이름 및 태그의 기본값인 createcertificates: 최신을 수락합니다.
Visual Studio Code에서 인증서를 만드는 방법을 보여 주는

빌드가 완료될 때까지 기다립니다.
비고
누락된 공개 키에 대한 경고가 표시될 수 있습니다. 이 경고는 무시해도 안전합니다. 마찬가지로 이미지에 대한 사용 권한을 확인하거나 재설정하는 것이 좋습니다. 이 이미지에 대해 무시해도 안전한 보안 경고가 표시됩니다.
Visual Studio Code 터미널 창에서 createcertificates 컨테이너를 실행합니다.
docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificatesDocker는 c:\ 드라이브에 대한 액세스를 요청합니다. 공유선택합니다.
메시지가 표시될 때 자격 증명을 입력하세요.
컨테이너 실행이 완료되면 c:\edgeCertificates 다음 파일을 확인합니다.
- c:\edgeCertificates\certs\azure-iot-test-only.root.ca.cert.pem
- c:\edgeCertificates\certs\new-edge-device-full-chain.cert.pem
- c:\edgeCertificates\certs\new-edge-device.cert.pem
- c:\edgeCertificates\certs\new-edge-device.cert.pfx
- c:\edgeCertificates\private\new-edge-device.key.pem
Azure Key Vault에 인증서 업로드
인증서를 안전하게 저장하고 여러 디바이스에서 액세스할 수 있도록 인증서를 Azure Key Vault에 업로드합니다. 앞의 목록에서 볼 수 있듯이 PFX 및 PEM이라는 두 가지 유형의 인증서 파일이 있습니다. PFX 파일을 Key Vault에 업로드할 Key Vault 인증서로 처리합니다. PEM 파일은 일반 텍스트이며 Key Vault 비밀로 처리합니다. 우리가 및Jupyter 노트북을 실행하여 만든 Azure Machine Learning 작업 영역과 관련하여 사용하는 Key Vault 인스턴스를 사용합니다.
Azure Portal에서Azure Machine Learning 작업 영역으로 이동합니다.
Machine Learning 작업 영역의 개요 페이지에서 Key Vault이름을 찾습니다.
개발 컴퓨터에서 Key Vault에 인증서를 업로드합니다. <subscriptionId> 및 <keyvaultname> 리소스 정보로 대체합니다.
c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>메시지가 표시되면 Azure에 로그인합니다.
스크립트는 새 Key Vault 항목을 나열하는 출력과 함께 몇 분 동안 실행됩니다.
Key Vault 스크립트 출력을 보여 주는

IoT Edge 디바이스 등록
Azure IoT Edge 디바이스를 IoT Hub에 연결하기 위해 먼저 허브에 디바이스를 등록합니다. 클라우드의 디바이스 ID에서 연결 문자열을 가져와서 IoT Edge 디바이스에서 런타임을 구성하는 데 사용합니다. 구성된 디바이스가 허브에 연결되면 모듈을 배포하고 메시지를 보낼 수 있습니다. 또한 IoT Hub에서 해당 디바이스 ID를 변경하여 물리적 IoT Edge 디바이스의 구성을 변경할 수도 있습니다.
이 자습서에서는 Visual Studio Code를 사용하여 새 디바이스 ID를 등록합니다. Azure Portal 또는 Azure CLI를 사용하여 이러한 단계를 완료할 수도 있습니다. 어떤 방법을 선택하든 IoT Edge 디바이스의 디바이스 연결 문자열을 가져와야 합니다. 디바이스 연결 문자열은 Azure Portal에서 디바이스의 세부 정보 페이지에서 찾을 수 있습니다.
개발 머신에서 Visual Studio Code를 엽니다.
Visual Studio Code 탐색기 보기에서 Azure IoT Hub 프레임을 확장합니다.
줄임표를 선택한 다음, IoT Edge 디바이스를생성하세요.
디바이스에 이름을 지정합니다. 편의를 위해 aaTurbofanEdgeDevice 이름을 사용하여 나열된 디바이스의 맨 위로 정렬합니다.
새 디바이스가 디바이스 목록에 표시됩니다.
Azure 가상 머신 배포
Azure IoT Edge 런타임이 설치되고 구성된 Ubuntu 18.04 LTS 가상 머신을 사용합니다. 배포는 iotedge-vm-deploy 프로젝트 리포지토리에서 유지 관리되는 Azure Resource Manager 템플릿 사용합니다. 템플릿에서 제공하는 연결 문자열을 사용하여 이전 단계에서 등록한 IoT Edge 디바이스를 프로비전합니다.
Azure Portal 또는 Azure CLI를 사용하여 가상 머신을 배포할 수 있습니다. Azure Portal 단계를 보여 줍니다. 자세한 내용은 Ubuntu Virtual Machines Azure IoT Edge 실행을 참조하세요.
[Azure에 배포] 단추를 사용하여 배포
iotedge-vm-deployARM 템플릿을 사용하여 Ubuntu 18.04 LTS 가상 머신을 배포하려면 아래 단추를 클릭합니다.새로 시작된 창에서 사용 가능한 양식 필드를 입력합니다.
분야 설명 구독 가상 머신을 배포하는 데 사용할 활성 Azure 구독입니다. 리소스 그룹 가상 머신 및 연결되는 해당 리소스를 포함할 기존 리소스 그룹 또는 새로 만든 리소스 그룹입니다. DNS 레이블 접두사 가상 머신의 호스트 이름을 접두사로 지정하는 데 사용되는 선택 항목의 필수 값입니다. 관리 사용자 이름 배포에 대한 루트 권한을 제공하는 사용자 이름입니다. 디바이스 연결 문자열 의도한 IoT Hub 내에서 만들어진 디바이스에 대한 디바이스 연결 문자열입니다. VM 크기 배포할 가상 머신의 크기 Ubuntu OS 버전 기본 가상 머신에 설치할 Ubuntu OS의 버전입니다. 위치 가상 머신을 배포할 지리적 지역입니다. 이 값은 기본적으로 선택한 리소스 그룹의 위치로 설정됩니다. 인증 유형 기본 설정에 따라 sshPublicKey 또는 password를 선택합니다. 관리자 암호 또는 키 선택한 인증 유형에 따른 SSH 공개 키 또는 암호의 값입니다. 모든 필드가 채워지면 페이지 맨 아래에 있는 확인란을 선택하여 약관에 동의하고 검토 + 만들기 및 만들기 선택하여 배포를 시작합니다.
Azure Portal에서 가상 머신으로 이동합니다. 리소스 그룹을 통해 찾거나, 포털 시작 페이지에서 Azure 서비스 아래의 Virtual Machines을 선택하여 찾을 수 있습니다.
가상 머신의 DNS 이름 기록해 둡니다. 가상 머신에 로그온하려면 필요합니다.
IoT Edge 디바이스에 연결
명령 프롬프트를 열고 다음 명령을 사용하여 가상 머신에 로그온합니다. 이전 섹션에 따라 사용자 이름 및 DNS 이름에 대한 사용자 고유의 정보를 입력합니다.
ssh <adminUsername>@<DNS_name>호스트의 진위 확인 요청이 나타나면 예 를 입력하고 엔터를 누릅니다.
메시지가 표시되면 암호를 입력합니다.
Ubuntu에서 환영 메시지를 표시하면
<username>@<machinename>:~$같은 프롬프트가 표시됩니다.
Key Vault 인증서 다운로드
이 문서의 앞부분에서는 IoT Edge 디바이스 및 다운스트림 디바이스에 사용할 수 있도록 Key Vault에 인증서를 업로드했습니다. 다운스트림 디바이스는 IoT Edge 디바이스를 게이트웨이로 사용하여 IoT Hub와 통신합니다.
자습서의 뒷부분에서 다운스트림 디바이스를 처리합니다. 이 섹션에서는 인증서를 IoT Edge 디바이스에 다운로드합니다.
Linux 가상 머신의 SSH 세션에서 Azure CLI를 사용하여 Azure에 로그인합니다.
az loginMicrosoft 디바이스 로그인 페이지로 브라우저를 열고 고유한 코드를 제공하라는 메시지가 표시됩니다. 로컬 컴퓨터에서 이러한 단계를 수행할 수 있습니다. 인증이 완료되면 브라우저 창을 닫습니다.
성공적으로 인증하면 Linux VM이 로그인하고 Azure 구독을 나열합니다.
Azure CLI 명령에 사용할 Azure 구독을 설정합니다.
az account set --subscription <subscriptionId>인증서에 대한 VM에 디렉터리를 만듭니다.
sudo mkdir /edgeMlCertificateskey Vault에 저장한 인증서(new-edge-device-full-chain.cert.pem, new-edge-device.key.pem 및 azure-iot-test-only.root.ca.cert.pem)를 다운로드합니다.
key_vault_name="<key vault name>" sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-full-chain-cert-pem -f /edgeMlCertificates/new-edge-device-full-chain.cert.pem sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-key-pem -f /edgeMlCertificates/new-edge-device.key.pem sudo az keyvault secret download --vault-name $key_vault_name --name azure-iot-test-only-root-ca-cert-pem -f /edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem
IoT Edge 디바이스 구성 업데이트
IoT Edge 런타임은 /etc/iotedge/config.yaml 파일을 사용하여 구성을 유지합니다. 이 파일에서 두 가지 정보를 업데이트해야 합니다.
- 인증서: 다운스트림 디바이스로 만든 연결에 사용할 인증서입니다.
- 호스트 이름: VM IoT Edge 디바이스의 FQDN(정규화된 도메인 이름)
config.yaml 파일을 직접 편집하여 인증서 및 호스트 이름을 업데이트합니다.
config.yaml 파일을 엽니다.
sudo nano /etc/iotedge/config.yaml선행 # 제거하고 다음 예제와 같이 파일이 표시되도록 경로를 설정하여 config.yaml 파일의 인증서 섹션을 업데이트합니다.
certificates: device_ca_cert: "/edgeMlCertificates/new-edge-device-full-chain.cert.pem" device_ca_pk: "/edgeMlCertificates/new-edge-device.key.pem" trusted_ca_certs: "/edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem"인증서: 줄에 선행 공백이 없고 중첩된 각 인증서가 두 개의 공백으로 들여쓰기되었는지 확인합니다.
nano에서 오른쪽 클릭하면 클립보드의 내용이 현재 커서 위치에 붙여넣어집니다. 문자열을 바꾸려면 키보드 화살표를 사용하여 바꿀 문자열로 이동하고 문자열을 삭제한 다음 마우스 오른쪽 단추를 클릭하여 버퍼에서 붙여넣습니다.
Azure Portal에서 가상 머신으로 이동합니다. 개요 섹션에서 DNS 이름(컴퓨터의 FQDN)을 복사합니다.
FQDN을 config.yml 파일의 호스트 이름 섹션에 붙여넣습니다. 이름이 모두 소문자인지 확인합니다.
hostname: '<machinename>.<region>.cloudapp.azure.com'Ctrl+X, Y, Enter선택하여 파일을 저장하고 닫습니다.
IoT Edge 디먼을 다시 시작합니다.
sudo systemctl restart iotedgeIoT Edge 디먼의 상태를 확인합니다. 명령 후에 :q 입력하여 종료합니다.
systemctl status iotedge
문제 해결
상태에 오류(“[ERROR]”라는 접두사가 붙은 색이 지정된 텍스트)가 표시되면 디먼 로그에서 자세한 오류 정보를 검사합니다.
journalctl -u iotedge --no-pager --no-full
오류 해결에 대한 자세한 내용은 문제 해결 페이지를 확인하세요.
리소스 정리
이 자습서는 각 문서가 이전 문서에서 수행한 작업을 기반으로 빌드되는 집합의 일부입니다. 최종 자습서를 완료할 때까지 리소스를 정리하지 마세요.
다음 단계
Azure VM을 IoT Edge 투명 게이트웨이로 구성하기만 했습니다. Key Vault에 업로드한 테스트 인증서를 생성하여 시작했습니다. 다음으로, 스크립트 및 Resource Manager 템플릿을 사용하여 Azure Marketplace에서 Ubuntu Server 16.04 LTS + Azure IoT Edge 런타임 이미지를 사용하여 VM을 배포했습니다. VM을 가동하고 실행하면서 SSH를 통해 연결했습니다. 그런 다음 Azure에 로그인하고 Key Vault에서 인증서를 다운로드했습니다. config.yaml 파일을 업데이트하여 IoT Edge 런타임의 구성을 여러 차례 업데이트했습니다.
다음 문서를 계속 진행하여 IoT Edge 모듈을 빌드합니다.