다음을 통해 공유


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

이 문서에서는 Azure CLI 또는 Azure PowerShell을 사용하여 Azure IoT Hub 템플릿을 내보내고, IoT Hub에 경로를 추가한 다음, 템플릿을 IoT 허브에 다시 배포하는 방법을 보여줍니다. Azure Resource Manager 템플릿을 사용하여 경로 및 엔드포인트를 만듭니다. IoT Hub는 다음 Azure 서비스를 엔드포인트로 지원합니다.

  • 스토리지 컨테이너
  • Event Hubs
  • Service Bus 큐
  • Service Bus 토픽
  • Cosmos DB

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

Important

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

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

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

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

필수 조건

메시지를 라우팅하려는 엔드포인트 유형에 따라 이 문서의 필수 구성 요소를 검토합니다.

Azure Resource Manager 템플릿

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

경로 만들기

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

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

IoT Hub의 Resource Manager 템플릿 내보내기

먼저 IoT Hub에서 Resource Manager 템플릿을 내보냅니다. IoT Hub에서 템플릿을 내보내면 엔드포인트를 추가하고 리소스를 라우팅하고 기존 설정을 잃지 않고 다시 배포할 수 있습니다.

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

    IoT Hub 리소스 메뉴에서 템플릿 내보내기 옵션의 위치를 보여 주는 스크린샷

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

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

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

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

    템플릿 내보내기 창에서 다운로드 단추의 위치를 보여 주는 스크린샷

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

템플릿에 엔드포인트 추가

각 경로는 메시지 또는 이벤트 로그가 끝나는 엔드포인트를 가리킵니다. 경로가 참조할 수 있는 IoT Hub에 엔드포인트를 만듭니다. 이벤트 허브, Service Bus 큐 또는 토픽, Azure Storage 계정 또는 Cosmos DB 컨테이너를 사용하여 IoT Hub 경로의 엔드포인트가 될 수 있습니다. 그러려면 엔드포인트를 만드는 데 사용할 서비스가 Azure 계정에 있어야 합니다.

IoT Hub는 메시지 또는 로그를 보내는 모든 엔드포인트 리소스에 대한 액세스 권한이 필요합니다. 관리 ID 및 Microsoft Entra ID를 사용하거나 연결 문자열 사용하여 액세스를 제공할 수 있습니다. 보다 안전한 옵션으로 Entra ID로 인증하는 것이 좋습니다.

Resource Manager 템플릿에 Event Hubs 엔드포인트를 추가합니다. 자세한 내용은 Azure Resource Manager 템플릿 RoutingEventHubProperties를 참조 하세요.

  1. JSON 파일에서 "routing" 아래에 중첩된 "endpoints": [] 속성을 찾습니다.

  2. 줄을 "endpoints": [] 다음 JSON으로 바꿉다.

    "endpoints": {
        "serviceBusQueues": [],
        "serviceBusTopics": [],
        "eventHubs": [
            {
                "endpointUri": "",
                "entityPath": "",
                "authenticationType": "identityBased",
                "identity": {
                    "userAssignedIdentity": ""
                },
                "name": "",
                "id": "",
                "subscriptionId": "",
                "resourceGroup": ""
            }
        ],
        "storageContainers": [],
        "cosmosDBSqlContainers": []
    },
    
  3. Event Hubs 리소스에 대한 다음 정보로 JSON을 업데이트합니다.

    속성
    endpointUri (인증 유형이 ;인 identityBased경우 그렇지 않으면 삭제합니다.) 형식의 Event Hubs 네임스페이스의 호스트 이름 sb://<eventhubs_namespace_name>.servicebus.windows.net
    entityPath (인증 유형이 ;인 identityBased경우 그렇지 않으면 삭제합니다.) 이벤트 허브의 이름입니다.
    authenticationType identityBased 또는 keyBased. 보다 안전한 옵션으로 ID 기반 인증을 권장합니다.
    identity (인증 유형이 .인 identityBased경우) IoT Hub에 시스템 할당 관리 ID가 사용하도록 설정된 경우 사용자 할당 관리 ID 또는 시스템 할당 관리 ID를 사용할 수 있습니다.

    사용자 할당의 경우: 이벤트 허브에 대한 액세스 권한이 있는 관리 ID의 외부 ID입니다 /subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>.

    시스템 할당의 경우: ID 매개 변수를 빈 목록으로 둡니다. 예를 들어 "identity": {},
    connectionString (인증 유형이 .인 keyBased경우) 이벤트 허브의 공유 액세스 정책 중 하나에서 기본 연결 문자열 Azure <connection_string>;EntityPath=<event_hub_name>. Portal에서 연결 문자열 값을 검색한 다음 엔터티 경로를 추가할 수 있습니다.
    name 엔드포인트의 이름을 지정하는 고유한 값을 제공합니다.
    id 빈 문자열로 둡니다. Azure 서비스는 엔드포인트를 만들 때 값을 제공합니다.
    subscriptionId 이벤트 허브를 포함하는 구독의 ID입니다.
    resourceGroup 이벤트 허브를 포함하는 리소스 그룹의 이름입니다.

    비밀 관리를 위해 매개 변수 파일을 만들거나 Azure Key Vault를 사용하여 배포 중에 보안 매개 변수 값을 전달할 수 있습니다.

템플릿에 경로 추가

Resource Manager 템플릿에 경로 정의를 추가합니다. 자세한 내용은 Azure Resource Manager 템플릿 RouteProperties를 참조 하세요.

  1. JSON 파일에서 아래에 "routing"중첩된 속성을 찾아 "routes": [] 새 경로를 추가합니다.

    주의

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

    "routes": [
        {
            "name": "",
            "source": "DeviceConnectionStateEvents",
            "condition": "true",
            "endpointNames": [
                ""
            ],
            "isEnabled": true
        }
    ],
    
  2. Cosmos DB 리소스에 대한 다음 정보로 JSON을 업데이트합니다.

    속성
    name 경로 이름을 지정하는 고유한 값을 제공합니다.
    source 메시지 또는 이벤트 로그 원본을 선택하여 엔드포인트로 라우팅합니다. 원본 옵션 목록은 az iot hub route를 참조하세요.
    condition 원본 데이터를 필터링하는 쿼리입니다. 조건이 필요하지 않은 경우 다음을 가정해 봅시다 true. 자세한 내용은 IoT Hub 메시지 라우팅 쿼리 구문을 참조하세요.
    endpointNames 이 데이터를 라우팅할 기존 엔드포인트의 이름입니다. 현재는 하나의 엔드포인트만 허용됩니다.
    isEnabled true 경로를 사용하도록 설정하거나 false 경로를 사용하지 않도록 설정합니다.
  3. 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 매개 변수에 사용할 템플릿 파일 이름(전체 파일 경로 대신)만 필요합니다.

Azure Cloud Shell에서 파일을 업로드할 단추의 위치를 보여 주는 스크린샷.

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

참고 항목

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

배포 확인

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

테스트 템플릿이 강조 표시된 Azure Portal의 리소스에 대한 배포 목록을 보여 주는 스크린샷

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

다음 단계

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

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