Share via


Azure Digital Twins 이벤트 라우팅

이 문서에서는 Azure Digital Twins가 Azure Digital Twins 내에서 내부적으로 이벤트를 라우팅하고 이벤트 데이터를 외부적으로 다운스트림 서비스 또는 서비스 외부의 연결된 컴퓨팅 리소스로 전송하기 위해 이벤트 데이터를 보내는 데 사용하는 프로세스를 설명합니다.

Azure Digital Twins에서 이벤트 알림을 라우팅하는 것은 엔드포인트를 만든 다음, 해당 엔드포인트로 데이터를 보내는 이벤트 경로를 만드는 2단계 프로세스입니다. 이 문서에서는 이러한 각 개념에 대해 자세히 설명합니다. 또한 엔드포인트가 적시에 이벤트를 전달하지 못하는 경우(데드 레터링이라고 하는 프로세스) 어떻게 되는지 설명합니다.

이벤트 라우팅 개요

Azure Digital Twins 데이터를 보내는 두 가지 주요 시나리오가 있으며 이벤트 경로는 두 가지를 모두 수행하는 데 사용됩니다.

  • Azure Digital Twins 그래프의 한 트윈에서 다른 트윈으로 이벤트 데이터 전송 예를 들어 하나의 디지털 트윈에서 속성이 변경되면 업데이트된 데이터를 기반으로 다른 디지털 트윈에 알리고 업데이트할 수 있습니다.
  • 더 많은 스토리지 또는 처리를 위해 Azure Digital Twins 외부의 데이터를 다운스트림 데이터 서비스로 보냅니다. 예를 들어 이미 Azure Maps를 사용하고 있다면 Azure Digital Twins 데이터를 제공하여 통합 모델링 또는 쿼리로 솔루션을 향상시킬 수 있습니다.

모든 이벤트 대상에 대해 이벤트 경로는 Azure Digital Twins에서 구독의 사용자 정의 엔드포인트로 이벤트 데이터를 전송하여 작동합니다. 3개의 Azure 서비스는 현재 엔드포인트, 즉 Event Hubs, Event GridService Bus에 지원됩니다. 이러한 각 Azure 서비스는 다른 서비스에 연결될 수 있으며 중개자 역할을 하여 Azure Maps와 같은 최종 목적지로 데이터를 보내거나 종속 그래프 업데이트를 위해 다시 Azure Digital Twins로 데이터를 보냅니다.

다음 다이어그램은 엔드포인트를 통해 Azure Digital Twins 데이터를 다른 Azure 서비스로 보내고 다시 Azure Digital Twins로 보내는 것을 포함하는 더 큰 IoT 솔루션을 통한 이벤트 데이터의 흐름을 보여 줍니다.

엔드포인트를 통해 여러 다운스트림 서비스로 데이터를 라우팅하는 Azure Digital Twins의 다이어그램.

Azure Digital Twins 외부 데이터 송신의 경우 이벤트 경로의 일반적인 다운스트림 대상은 Time Series Insights, Azure Maps, 스토리지 및 분석 솔루션입니다. Azure Digital Twins는 송신 서비스로 내보낸 데이터에 대해 최소 한 번 배달을 구현합니다.

동일한 Azure Digital Twins 솔루션 내에서 내부 디지털 트윈 이벤트를 라우팅하려면 다음 섹션을 계속 진행하세요.

내부 디지털 트윈 이벤트 라우팅

이벤트 경로는 트윈 그래프 내에서 이벤트를 처리하는 데 사용되는 메커니즘으로, 디지털 트윈에서 디지털 트윈으로 데이터를 전송합니다. 이 이벤트 처리 정렬 작업은 Event Grid를 통해 Azure Functions와 같은 컴퓨팅 리소스에 이벤트 경로를 연결하여 수행됩니다. 그런 다음, 이러한 함수는 트윈이 이벤트를 수신하고 응답하는 방법을 정의합니다.

컴퓨팅 리소스가 이벤트 경로를 통해 받은 이벤트를 기반으로 트윈 그래프를 수정하려는 경우 수정해야 하는 트윈을 미리 아는 것이 도움이 됩니다. 이벤트 메시지에는 메시지를 보낸 원본 트윈의 ID도 포함되므로 컴퓨팅 리소스는 쿼리 또는 트래버스 관계를 사용하여 원하는 작업에 대한 대상 트윈을 찾을 수 있습니다.

또한 컴퓨팅 리소스는 보안 및 액세스 권한을 독립적으로 설정해야 합니다.

디지털 트윈 이벤트를 처리하도록 Azure 함수를 설정하는 프로세스를 살펴보려면 트윈 간 이벤트 처리 설정을 참조하세요.

엔드포인트 만들기

이벤트 경로를 정의하려면 개발자는 먼저 엔드포인트를 정의해야 합니다. 엔드포인트는 라우팅 연결을 지원하는 Azure Digital Twins 외부의 대상입니다. 지원되는 대상은 다음과 같습니다.

  • Event Grid 사용자 지정 토픽
  • Event Hubs
  • Service Bus

엔드포인트를 만들려면 Azure Digital Twins REST API, CLI 명령 또는 Azure Portal을 사용할 수 있습니다.

엔드포인트를 정의하는 경우 다음을 제공해야 합니다.

  • 엔드포인트의 이름
  • 엔드포인트 유형(Event Grid, Event Hubs 또는 Service Bus)
  • 인증할 기본 연결 문자열 및 보조 연결 문자열
  • 엔드포인트의 토픽 경로(예: your-topic.westus2.eventgrid.azure.net)

필요에 따라 ID 기반 인증을 사용하여 엔드포인트를 만들어 시스템 할당 또는 사용자 할당 관리 ID로 엔드포인트를 사용하도록 선택할 수 있습니다. 이 옵션은 Event Hubs 및 Service Bus 유형 엔드포인트에만 사용할 수 있습니다(Event Grid에는 지원되지 않음).

컨트롤 플레인에서 사용할 수 있는 엔드포인트 API는 다음과 같습니다.

  • 엔드포인트 만들기
  • 엔드포인트 목록 가져오기
  • 이름으로 엔드포인트 가져오기
  • 이름으로 엔드포인트 삭제

엔드포인트를 만드는 방법에 대한 자세한 지침은 엔드포인트 만들기를 참조하세요.

이벤트 경로 만들기

이벤트 경로를 만들려면 Azure Digital Twins REST API, CLI 명령 또는 Azure Portal을 사용할 수 있습니다.

다음은 CreateOrReplaceEventRouteAsync.NET(C#) SDK 호출을 사용하여 클라이언트 애플리케이션 내에서 이벤트 경로를 만드는 예제입니다.

string eventFilter = "$eventType = 'DigitalTwinTelemetryMessages' or $eventType = 'DigitalTwinLifecycleNotification'";
var er = new DigitalTwinsEventRoute("endpointName", eventFilter);
await client.CreateOrReplaceEventRouteAsync("routeId", er);
  1. 먼저 DigitalTwinsEventRoute 개체가 만들어지고 생성자는 엔드포인트의 이름을 사용합니다. 이 endpointName 필드는 Event Hubs, Event Grid 또는 Service Bus 등의 엔드포인트를 식별합니다. 이러한 엔드포인트는 구독에서 생성되고 이 등록을 호출하기 전에 컨트롤 플레인 API를 사용하여 Azure Digital Twins에 연결되어야 합니다.

  2. 이벤트 경로 개체에는 이 경로를 따르는 이벤트 유형을 제한하는 데 사용할 수 있는 필터 필드도 있습니다. true 필터는 추가 필터링 없이 경로를 사용하도록 설정합니다. false 필터는 경로를 사용하지 않도록 설정합니다.

  3. 그런 다음, 이 이벤트 경로 개체는 경로에 대한 이름과 함께 CreateOrReplaceEventRouteAsync에 전달됩니다.

모든 SDK 함수는 동기 및 비동기 버전으로 제공됩니다.

이벤트 경로를 만드는 방법에 대한 자세한 지침은 경로 및 필터 만들기를 참조하세요.

배달 못한 편지 이벤트

엔드포인트가 특정 기간 내에 이벤트를 전달할 수 없거나 여러 횟수만큼 이벤트를 전달하려고 시도한 후 이벤트를 전달할 수 없는 경우 배달되지 않은 이벤트를 스토리지 계정으로 보낼 수 있습니다. 이 프로세스를 배달 못한 편지 처리라고 합니다. 다음 조건 중 하나가 충족되면 Azure Digital Twins는 이벤트를 배달하지 않습니다.

  • 이벤트가 TTL(Time to Live) 기간 내에 배달되지 않은 경우
  • 이벤트 전달 시도 횟수가 한도를 초과한 경우

조건 중 하나가 충족되면 이벤트가 삭제되거나 배달 못한 편지로 처리됩니다. 기본적으로 각 엔드포인트는 배달 못한 편지를 설정하지 않습니다. 이 기능을 사용하려면 엔드포인트를 만들 때 전송되지 않은 이벤트를 보유할 스토리지 계정을 지정해야 합니다. 그런 다음, 이 스토리지 계정에서 이벤트를 끌어와 전송을 해결합니다.

배달 못한 편지 위치를 설정하기 전에 컨테이너를 포함하는 스토리지 계정이 있어야 합니다. 엔드포인트를 만들 때 이 컨테이너에 대한 URL을 제공합니다. 배달 못한 편지는 SAS 토큰과 함께 컨테이너 URL로 제공됩니다. 이 토큰은 스토리지 계정 내의 대상 컨테이너에 대한 write 권한만이 필요합니다. 완전히 구성된 URL의 형식은 다음과 같습니다. https://<storage-account-name>.blob.core.windows.net/<container-name>?<SAS-token>

SAS 토큰에 대해 자세히 알아보려면 SAS(공유 액세스 서명)를 사용하여 Azure Storage 리소스에 대한 제한된 액세스 권한 부여를 참조하세요.

배달 못 한 편지로 엔드포인트를 설정하는 방법을 알아보려면 엔드포인트 옵션: 배달 못 한 편지를 참조하세요.

이벤트 메시지 형식

IoT Hub의 다양한 이벤트 유형 및 Azure Digital Twins는 아래에 설명된 대로 서로 다른 유형의 알림 메시지를 생성합니다.

알림 유형 라우팅 원본 이름 생성 원인...
디지털 트윈 변경 알림 디지털 트윈 변경 알림 모든 디지털 트윈 속성 변경
디지털 트윈 수명 주기 알림 디지털 트윈 수명 주기 알림 모든 디지털 트윈 만들기 또는 삭제 작업
디지털 트윈 관계 변경 알림 디지털 트윈 관계 변경 알림 모든 디지털 트윈 관계 변경
디지털 트윈 원격 분석 메시지 원격 분석 메시지 모든 원격 분석 메시지

다음 단계

엔드포인트 및 이벤트 경로를 설정하기 위한 단계별 지침을 계속 진행합니다.

또는 이 연습에 따라 Azure Digital Twins 내에서 트윈 간 이벤트 처리를 위한 Azure 함수를 설정합니다.