Azure Resource Manager를 사용하여 경로 및 엔드포인트 만들기 및 삭제

이 문서에서는 Azure CLI 또는 Azure PowerShell을 사용하여 Azure IoT Hub 템플릿을 내보내고, IoT Hub에 경로를 추가한 다음, 템플릿을 IoT 허브에 다시 배포하는 방법을 보여줍니다. Azure Resource Manager 템플릿을 사용하여 Azure Event Hubs, Azure Service Bus 큐 및 토픽, Azure Storage에 대한 경로 및 엔드포인트를 만들어보세요.

Azure Resource Manager 템플릿은 JSON 파일을 사용하여 리소스를 정의하려는 경우에 유용합니다. 모든 Azure 리소스에는 해당 리소스에 사용되는 구성 요소를 정의하는 템플릿이 있습니다. 모든 Azure 리소스 템플릿을 내보낼 수 있습니다.

Important

Resource Manager 템플릿을 사용하여 리소스를 배포하는 경우 이 템플릿은 배포되는 기존 리소스를 대체합니다.

새 IoT 허브를 만들 때 기존에 배포된 리소스를 덮어써도 문제가 되지 않습니다. 새 IoT 허브를 만들려면 이미 배포된 IoT 허브의 기존 템플릿을 내보내는 대신 필요한 속성이 있는 기본 템플릿을 사용하면 됩니다.

그러나 기존 IoT 허브 Resource Manager 템플릿에 경로를 추가하는 경우에는 업데이트된 템플릿을 배포한 후 모든 기존 리소스와 속성이 연결된 상태를 유지하도록 IoT 허브에서 내보낸 템플릿을 사용해야 합니다. 이미 배포된 리소스는 대체되지 않습니다. 예를 들어 이전에 배포하고 내보낸 Resource Manager 템플릿은 스토리지에 연결한 경우 IoT 허브에 대한 스토리지 정보를 포함하고 있을 수 있습니다.

IoT Hub에서 라우팅의 작동 방식에 대한 자세한 내용은 IoT Hub 메시지 라우팅을 사용하여 디바이스-클라우드 메시지를 다른 엔드포인트로 보내기를 참조하세요. 메시지를 스토리지에 보내는 경로를 설정한 후 시뮬레이션된 디바이스에서 테스트하는 단계를 알아보려면 자습서: IoT Hub 메시지 라우팅을 사용하여 디바이스 데이터를 Azure Storage로 보내기를 참조하세요.

필수 조건

문서에 설명된 절차에서는 다음 리소스를 사용합니다.

  • Azure Resource Manager 템플릿
  • IoT 허브
  • Azure의 엔드포인트 서비스

Azure Resource Manager 템플릿

이 문서에서는 Azure Portal의 Azure Resource Manager 템플릿을 사용하여 IoT Hub 및 기타 Azure 서비스를 작업합니다. Resource Manager 템플릿 사용 방법에 대한 자세한 내용은 Azure Resource Manager 템플릿이란?을 참조하세요.

IoT 허브

IoT 허브 경로를 만들려면 Azure IoT Hub를 사용하여 만든 IoT 허브가 필요합니다. 디바이스 메시지 및 이벤트 로그는 IoT 허브에서 시작됩니다.

IoT 허브 경로를 만들 때 사용할 다음 허브 리소스가 있어야 합니다.

엔드포인트 서비스

IoT 허브 경로를 만들려면 경로에 대한 엔드포인트로 사용할 하나 이상의 다른 Azure 서비스가 필요합니다. 엔드포인트는 디바이스 메시지 및 이벤트 로그를 받습니다. 엔드포인트에 사용하여 IoT 허브 경로에 연결하는 Azure 서비스(Event Hubs, Service Bus 큐 또는 토픽 또는 Azure Storage)를 선택할 수 있습니다.

IoT 허브 경로에 엔드포인트를 만들 때 사용할 다음 리소스 중 하나가 있어야 합니다.

경로 만들기

IoT Hub에서 메시지를 보내거나 이벤트를 캡처하는 경로를 만들 수 있습니다. 각 경로에는 데이터 원본과 엔드포인트가 있습니다. 데이터 원본은 메시지 또는 이벤트 로그가 시작되는 위치입니다. 엔드포인트는 메시지 또는 이벤트 로그가 끝나는 위치입니다. IoT 허브에서 새 경로를 만들 때 데이터 원본 및 엔드포인트의 위치를 선택합니다. 그런 다음, 라우팅 쿼리를 사용하여 엔드포인트로 이동하기 전에 메시지 또는 이벤트를 필터링합니다.

IoT 허브 경로의 엔드포인트가 될 이벤트 허브, Service Bus 큐/토픽 또는 Azure 스토리지 계정을 사용할 수 있습니다. 그러려면 엔드포인트를 만드는 데 사용할 서비스가 Azure 계정에 있어야 합니다.

IoT 허브에서 Resource Manager 템플릿 내보내기

먼저 IoT 허브에서 Resource Manager 템플릿을 내보낸 다음, 경로를 추가합니다.

  1. Azure Portal에서 IoT Hub로 이동합니다. 리소스 메뉴의 자동화에서 템플릿 내보내기를 선택합니다.

    Screenshot that shows the location of the Export template option in the menu of an IoT Hub resource.

  2. 템플릿 내보내기템플릿 탭에서 다음 단계를 완료합니다.

    1. IoT 허브에 대해 생성된 JSON 파일을 봅니다.

    2. Include 매개 변수 확인란을 선택 취소합니다.

    3. 다운로드를 선택하여 JSON 파일의 로컬 복사본을 다운로드합니다.

    Screenshot that shows the location of the Download button on the Export template pane.

    템플릿에는 IoT 허브에 기능 또는 서비스를 추가하는 데 사용할 수 있는 여러 자리 표시자가 있습니다. 이 문서에서는 routing 아래에 있거나 중첩된 속성에만 값을 추가합니다.

Resource Manager 템플릿에 새 엔드포인트 추가

JSON 파일에서 "routing" 아래에 중첩된 "endpoints": [] 속성을 찾습니다. 엔드포인트에 대해 선택한 Azure 서비스(Event Hubs, Service Bus 큐/토픽 또는 Azure Storage)를 기반으로 새 엔드포인트를 추가하는 단계를 완료합니다.

Event Hubs 리소스를 만드는 방법을 알아보려면 빠른 시작: Resource Manager 템플릿을 사용하여 이벤트 허브 만들기를 참조하세요.

Azure Portal에서 Event Hubs 리소스의 기본 연결 문자열을 가져옵니다. 리소스의 공유 액세스 정책 창에서 정책 중 하나를 선택하여 키 및 연결 문자열 정보를 확인합니다. 연결 문자열의 끝에 있는 엔터티 경로에 이벤트 허브 이름을 추가합니다. 예를 들면 ;EntityPath=my-event-hubs를 사용합니다. 이 이름은 네임스페이스 이름이 아니라 이벤트 허브 이름입니다.

name에는 Event Hubs 엔드포인트의 고유한 값을 사용합니다. id 매개 변수는 빈 문자열로 둡니다. Azure 서비스는 사용자가 엔드포인트를 배포할 때 id 값을 제공합니다.

"routing": {
   "endpoints": {
      "serviceBusQueues": [],
      "serviceBusTopics": [],
      "eventHubs": [
            {
               "connectionString": "my Event Hubs connection string + entity path",
               "authenticationType": "keyBased",
               "name": "my-event-hubs-endpoint",
               "id": "",
               "subscriptionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
               "resourceGroup": "my-resource-group"
            }
      ],
      "storageContainers": [],
      "cosmosDBSqlCollections": []
   },
},

Resource Manager 템플릿에 새 경로 추가

JSON 파일에서 "routing" 아래에 중첩된 "routes": [] 속성을 찾고, 선택한 엔드포인트 서비스(Event Hubs, Service Bus 큐/토픽 또는 Azure Storage)에 따라 새 경로를 추가합니다.

기본 대체 경로는 DeviceMessages에서 메시지를 수집합니다. DeviceConnectionStateEvents와 같은 다른 옵션을 선택하세요. 소스 옵션에 대한 자세한 내용은 az iot hub route를 참조하세요.

주의

"routes"의 기존 값을 다음 코드 예제에서 사용되는 경로 값으로 바꾸면 배포할 때 기존 경로가 제거됩니다. 기존 경로를 유지하려면 새 경로 개체를 "routes" 목록에 추가합니다.

템플릿에 대한 자세한 내용은 Azure Resource Manager 템플릿 리소스 정의를 참조하세요.

"routes": [
    {
        "name": "MyIotHubRoute",
        "source": "DeviceConnectionStateEvents",
        "condition": "true",
        "endpointNames": [
        "my-event-hubs-endpoint"
        ],
        "isEnabled": true
    }
],

JSON 파일을 저장합니다.

Resource Manager 템플릿 배포

새 엔드포인트와 경로를 Resource Manager 템플릿에 추가했으면 JSON 파일을 IoT 허브에 다시 배포할 수 있습니다.

로컬 배포

az deployment group create \
  --name my-iot-hub-template \
  --resource-group my-resource-group \
  --template-file "my\path\to\template.json"

Azure Cloud Shell 배포

Azure Cloud Shell은 웹 브라우저에서 실행되므로, 배포 명령을 실행하기 전에 템플릿 파일을 업로드할 수 있습니다. 파일이 업로드되면 template-file 매개 변수에 사용할 템플릿 파일 이름(전체 파일 경로 대신)만 필요합니다.

Screenshot that shows the location of the button in Azure Cloud Shell to upload a file.

az deployment group create \
  --name my-iot-hub-template \
  --resource-group my-resource-group \
  --template-file "template.json"

참고 항목

배포에 실패한 경우 -verbose 스위치를 사용하여 생성 중인 리소스에 대한 정보를 가져옵니다. 디버깅에 대한 자세한 정보를 보려면 -debug 스위치를 사용합니다.

배포 확인

템플릿이 Azure에 성공적으로 배포되었는지 확인하려면 Azure Portal에서 리소스 그룹 리소스로 이동합니다. 리소스 메뉴의 설정에서 배포를 선택하여 배포 목록에서 템플릿을 확인합니다.

Screenshot that shows a list of deployments for a resource in the Azure portal, with a test template highlighted.

Azure Portal에서 새 경로를 보려면 IoT Hub 리소스로 이동합니다. 메시지 라우팅 창의 경로 탭에서 경로가 나열되어 있는지 확인합니다.

다음 단계

이 방법 문서에서는 Event Hubs, Service Bus 큐 및 토픽, Azure Storage에 대한 경로 및 엔드포인트를 만드는 방법을 알아보았습니다.

메시지 라우팅에 대한 자세한 내용은 자습서: IoT Hub 메시지 라우팅을 사용하여 Azure Storage에 디바이스 데이터 보내기를 참조하세요. 이 자습서에서는 스토리지 경로를 만들고 IoT 허브의 디바이스를 사용하여 테스트합니다.