디바이스-클라우드 IoT Hub 메시지의 메시지 보강
메시지 보강이란 지정된 엔드포인트로 메시지를 보내기 전에 추가 정보를 사용하여 메시지에 스탬프할 수 있는 IoT Hub의 기능입니다. 메시지 보강을 사용하는 한 가지 이유는 다운스트림 처리를 간소화하는 데 사용할 수 있는 데이터를 포함하는 것입니다. 예를 들어 디바이스 원격 분석 메시지를 디바이스 쌍 태그로 보강하면 고객이 이 정보를 얻기 위해 디바이스 쌍 API를 호출해야 하는 부담을 줄일 수 있습니다.
메시지 보강에는 다음과 같은 세 가지 주요 요소가 있습니다.
보강 이름 또는 키
값
보강을 적용해야 하는 하나 이상의 엔드포인트.
키가 문자열입니다. 키에는 영숫자와 특수 문자(하이픈(-
), 밑줄(_
), 마침표(.
))만 사용할 수 있습니다.
값은 다음 예 중 하나일 수 있습니다.
모든 정적 문자열. 조건, 논리, 연산, 함수와 같은 동적 값은 허용되지 않습니다. 예를 들어, 여러 고객이 사용하는 SaaS 애플리케이션을 개발하는 경우 각 고객에게 식별자를 할당하고 해당 식별자를 애플리케이션에서 사용할 수 있도록 설정할 수 있습니다. 애플리케이션이 실행되면 IoT Hub는 고객의 식별자를 사용하여 디바이스 원격 분석 메시지를 스탬프 처리하므로 각 고객에 대해 메시지를 다르게 처리할 수 있습니다.
메시지를 보내는 IoT 허브의 이름입니다. 이 값은 $iothubname입니다.
디바이스 쌍 정보(예: 경로). 예를 들면 $twin.tags.field 및 $twin.tags.latitude입니다.
참고 항목
현재는 $iothubname, $twin.tags, $twin.properties.desired, $twin.properties.reported만이 메시지 보강에 지원되는 변수입니다. 또한 보강의 기본 형식만 지원됩니다. 메시지를 개체 형식으로 보강할 수 없습니다.
메시지 보강이 선택된 엔드포인트에 전송된 메시지에 애플리케이션 속성으로 추가됩니다.
보강 적용
메시지는 다음 예제를 포함하여 IoT Hub 메시지 라우팅이 지원하는 모든 데이터 원본에서 가져올 수 있습니다.
- 디바이스 원격 분석(예: 온도 또는 압력)
- 디바이스 쌍 변경 알림(디바이스 쌍의 변경 내용)
- 디바이스 수명 주기 이벤트(예: 디바이스 생성 또는 삭제)
IoT Hub의 기본 제공 엔드포인트로 이동하는 메시지 또는 Azure Blob Storage, Service Bus 큐 또는 Service Bus 토픽과 같은 사용자 지정 엔드포인트로 라우팅되는 메시지에 보강을 추가할 수 있습니다.
먼저 디바이스 원격 분석 메시지 유형으로 Event Grid 구독을 만들어 Event Grid에 게시되는 메시지에 보강을 추가할 수도 있습니다. 이 구독을 기준으로 Azure IoT Hub에서 원격 분석에 대한 기본 경로를 만듭니다. 이 단일 경로는 모든 Event Grid 구독을 처리할 수 있습니다. 그런 다음, IoT Hub 메시지 라우팅 섹션의 메시지 보강 탭을 사용하여 엔드포인트에 대한 보강을 구성할 수 있습니다. Event Grid를 사용하여 이벤트에 반응하는 방법에 대한 내용은 IoT Hub 및 Event Grid를 참조하세요.
보강은 엔드포인트별로 적용됩니다. 특정 엔드포인트에 대해 스탬프할 5개의 보강을 지정하는 경우 이 엔드포인트로 이동하는 모든 메시지에는 동일한 5개의 보강이 스탬프됩니다.
보강은 다음과 같은 방법으로 구성할 수 있습니다.
방법 | Command |
---|---|
포털 | Azure Portal 메시지 보강 자습서를 참조하세요. |
Azure CLI | az iot hub message-enrichment |
Azure PowerShell | Add-AzIotHubMessageEnrichment |
메시지 보강을 추가한다고 해서 메시지 라우팅에 대기 시간이 길어지지 않습니다.
메시지 보강을 확인하려면 메시지 보강 자습서를 참조하세요.
제한 사항
표준 또는 기본 계층에서 해당 허브에 대해 IoT Hub별로 최대 10개의 보강을 추가할 수 있습니다. 무료 계층의 IoT Hub에는 최대 2개의 보강을 추가할 수 있습니다.
경우에 따라 디바이스 쌍의 태그나 속성으로 설정된 값을 사용하여 메시지를 보강하면, 해당 값이 지정된 디바이스 쌍 경로로 스탬프됩니다. 예를 들어 보강 값이 $twin.tags.field로 설정된 경우, 메시지는 트윈의 해당 필드 값이 아니라 문자열 "$twin.tags.field"로 스탬프됩니다. 이 동작은 다음과 같은 경우에 발생합니다.
IoT Hub가 기본 계층에 있는 경우. 기본 계층 IoT 허브는 디바이스 쌍을 지원하지 않습니다.
IoT 허브가 표준 계층에 있지만, 보강 값에 사용되는 디바이스 쌍 경로가 존재하지 않습니다. 예를 들어 보강 값이 $twin.tags.location으로 설정되고 디바이스 쌍이 태그 아래에 location 속성이 없으면 메시지에 "$twin.tags.location" 문자열이 스탬프됩니다.
IoT Hub가 표준 계층에 있지만, 보강 값에 사용되는 디바이스 쌍 경로가 단순 속성이 아닌 개체로 확인되는 경우. 예를 들어 보강 값이 $twin.tags.location으로 설정되고 태그 아래의 위치 속성이
{"building": 43, "room": 503}
같은 자식 속성을 포함하는 개체인 경우, 메시지는 "$twin.tags.location" 문자열로 스탬프됩니다.
디바이스 쌍에 대한 업데이트는 해당 보강 값에 반영되는 데 최대 5분이 걸릴 수 있습니다.
총 메시지 크기는 보강을 포함하여 256KB를 초과할 수 없습니다. 메시지 크기가 256KB를 초과하면 IoT Hub가 메시지를 삭제합니다. 메시지를 삭제할 때 IoT Hub 메트릭을 사용하여 오류를 식별하고 디버그할 수 있습니다. 예를 들어 라우팅 메트릭에서 호환되지 않는 원격 분석 메시지(d2c.telemetry.egress.invalid) 메트릭을 모니터링할 수 있습니다. 자세히 알아보려면 IoT Hub 모니터링을 참조하세요.
메시지 보강은 디지털 트윈 변경 이벤트에 적용되지 않습니다.
모듈은 해당 디바이스에서 쌍 태그를 상속하지 않습니다. 디바이스 모듈(예: IoT Edge 모듈)에서 시작된 메시지의 보강은 모듈 쌍에 설정된 쌍 태그를 사용해야 합니다.
가격 책정
메시지 보강은 추가 요금 없이 사용할 수 있습니다. 현재 IoT 허브에 메시지를 보낼 때 요금이 청구됩니다. 메시지가 여러 엔드포인트로 보내지더라도 요금은 해당 메시지에 대해 한 번만 청구됩니다.
다음 단계
IoT Hub로 메시지를 라우팅하는 방법에 대한 자세한 내용은 다음 문서를 확인하세요.