다음을 통해 공유


트윈 간 이벤트 처리 설정

이 문서에서는 트윈에서 트윈으로 이벤트를 보내서 그래프에서 하나의 디지털 트윈이 업데이트되면 이 정보의 영향을 받는 그래프의 관련 트윈도 업데이트할 수 있도록 하는 방법을 보여 줍니다. 이 이벤트 처리는 IoT Hub 같은 외부 원본에서 Azure Digital Twins에 도착하는 데이터가 전체 그래프를 통해 전파되는 완전히 연결된 Azure Digital Twins 그래프를 만드는 데 도움이 됩니다.

이 트윈-트윈 이벤트 처리를 설정하려면 쌍 수명 주기 이벤트를 감시하는 Azure 함수를 만듭니다. 함수는 그래프의 다른 트윈에 영향을 줄 이벤트를 인식하고 이벤트 데이터를 사용하여 그에 따라 영향을 받는 트윈을 적절하게 업데이트합니다.

필수 조건

트윈 간 처리를 설정하려면 작업할 Azure Digital Twins 인스턴스가 필요합니다. 인스턴스를 만드는 방법에 대한 지침은 Azure Digital Twins 인스턴스 및 인증 설정을 참조하세요. 인스턴스에는 데이터를 보내려는 트윈이 최소 두 개 이상 있어야 합니다.

필요에 따라 트윈에 대해서도 IoT 허브를 통해 자동 원격 분석 수집을 설정할 수도 있습니다. 이 프로세스는 트윈 간에 데이터를 보내는 데는 필요하지 않지만 트윈 그래프가 라이브 디바이스 원격 분석을 통해 구동되는 완전한 솔루션의 중요한 부분입니다.

엔드포인트에 트윈 이벤트 보내기

트윈 간 이벤트 처리를 설정하려면 먼저 Azure Digital Twins에서 엔드포인트를 만들고 해당 엔드포인트에 대한 경로를 만듭니다. 업데이트를 진행 중인 트윈은 경로를 사용하여 해당 업데이트 이벤트에 대한 정보를 엔드포인트로 보냅니다. 여기서 Event Grid는 나중에 해당 이벤트를 선택하고 처리를 위해 Azure 함수에 전달할 수 있습니다.

Event Grid 토픽 만들기

Event Grid는 Azure 서비스에서 Azure 내의 다른 위치로 이벤트를 라우팅하고 전송하는 데 도움이 되는 Azure 서비스입니다. Event Grid 토픽을 만들어 원본에서 특정 이벤트를 수집할 수 있고, 그러면 구독자가 토픽에서 수신 대기하여 이벤트가 올 때 해당 이벤트를 받을 수 있습니다.

Azure CLI에서 다음 명령을 실행하여 Event Grid 토픽을 만듭니다.

az eventgrid topic create --resource-group <your-resource-group> --name <name-for-your-event-grid-topic> --location <region>

이 명령을 실행하면 사용자가 만든 Event Grid 토픽에 대한 정보가 출력됩니다. 나중에 사용되게 되므로 Event Grid 토픽에 지정한 이름을 저장합니다.

엔드포인트 만들기

다음으로, 인스턴스를 Event Grid 토픽에 연결하는 Azure Digital Twins에 Event Grid 엔드포인트를 만듭니다. 아래 명령을 사용하여 필요에 따라 이전 단계의 Event Grid 토픽 및 다른 자리 표시자 필드의 이름을 입력합니다.

az dt endpoint create eventgrid --dt-name <Azure-Digital-Twins-instance> --eventgrid-resource-group <your-resource-group> --eventgrid-topic <your-event-grid-topic> --endpoint-name <name-for-your-Azure-Digital-Twins-endpoint>

이 명령을 실행하면 만든 엔드포인트에 대한 정보가 출력됩니다.

출력에서 provisioningState 필드를 찾아 해당 값이 "성공"인지 확인합니다.

ProvisioningState of Succeeded가 있는 엔드포인트를 보여 주는 Azure Portal의 Cloud Shell에 있는 엔드포인트 쿼리의 결과 스크린샷

"프로비저닝"을 나타낼 수도 있습니다. 즉, 엔드포인트가 아직 생성되고 있음을 의미합니다. 이 경우 몇 초 정도 기다렸다가 다음 명령을 실행하여 엔드포인트의 상태를 확인합니다. provisioningState에 "성공이" 표시될 때까지 반복합니다.

az dt endpoint show --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint> 

나중에 사용하므로 엔드포인트의 이름을 저장합니다.

경로 만들기

그런 다음, 만들었던 Event Grid 엔드포인트에 이벤트를 보내는 Azure Digital Twins 경로를 만듭니다.

다음 CLI 명령을 사용하여 필요에 따라 이전 단계의 엔드포인트 및 다른 자리 표시자 필드의 이름을 입력합니다. 이 명령은 트윈 그래프에서 발생하는 모든 이벤트를 전달합니다.

필터를 사용하여 원하는 경우 이벤트를 특정 이벤트로만 제한할 수 있습니다.

az dt route create --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint> --route-name <name-for-your-Azure-Digital-Twins-route>

이 명령을 실행하면 만든 경로에 대한 일부 정보가 출력됩니다.

참고 항목

엔드포인트(이전 단계에서)는 프로비저닝을 완료해야 해당 엔드포인트를 사용하는 이벤트 경로를 설정할 수 있습니다. 엔드포인트가 준비되지 않았기 때문에 경로를 만들지 못한 경우 몇 분 정도 기다린 다음, 다시 시도하세요.

쌍을 업데이트하는 Azure 함수 만들기

다음으로, 엔드포인트에서 수신 대기하다가 경로를 통해 전송되는 트윈 이벤트를 수신하는 Azure 함수를 만듭니다. 함수의 논리는 이벤트에서 업데이트되어야 할 다른 트윈이 무엇인지 결정할 정보를 사용하여 업데이트를 수행해야 합니다.

  1. 먼저 새 Azure Functions 프로젝트를 만듭니다.

    Visual Studio(지침은 Visual Studio를 사용하여 Azure Functions 개발 참조), Visual Studio Code(지침은 Visual Studio Code를 사용하여 Azure에서 C# 함수 만들기 참조) 또는 Azure CLI(지침은 명령줄에서 Azure에 C# 함수 만들기 참조)를 사용하여 이 작업을 수행할 수 있습니다.

  2. 프로젝트에 다음 패키지를 추가합니다. 명령줄 도구에서 Visual Studio NuGet 패키지 관리자 또는 dotnet add package 명령을 사용할 수 있습니다.

  3. 함수의 논리를 입력합니다. 시작하는 데 도움이 되도록 azure-digital-twins-getting-started 리포지토리에서 여러 시나리오에 대한 샘플 함수 코드를 볼 수 있습니다.

  4. 원하는 방법을 사용하여 함수를 Azure에 게시합니다.

    Visual Studio를 사용하여 함수를 게시하는 방법에 대한 지침은 Visual Studio를 사용하여 Azure Functions 개발을 참조하세요. Visual Studio Code를 사용하여 함수를 게시하는 방법에 대한 지침은 Visual Studio Code를 사용하여 Azure에서 C# 함수 만들기를 참조하세요. Azure CLI를 사용하여 함수를 게시하는 방법에 대한 지침은 명령줄에서 Azure의 C# 함수 만들기를 참조하세요.

함수 게시 프로세스가 완료되면 Azure CLI 명령을 사용하여 게시에 성공했는지 확인할 수 있습니다. 리소스 그룹에 대한 자리 표시자, 함수 앱의 이름 및 특정 함수의 이름이 있습니다. 명령은 함수에 대한 정보를 출력합니다.

az functionapp function show --resource-group <your-resource-group> --name <your-function-app> --function-name <your-function>

함수 앱 구성

함수가 Azure Digital Twins 액세스하려면 인스턴스 및 액세스 권한에 대한 일부 정보가 필요합니다. 이 섹션에서는 인스턴스를 찾아 액세스할 수 있도록 함수에 대한 액세스 역할을 할당하고 애플리케이션 설정을 구성합니다.

Azure Cloud Shell 또는 로컬 Azure CLI에서 다음 명령을 실행합니다.

참고 항목

이 섹션은 Azure 리소스에 대한 사용자 액세스를 관리할 수 있는 권한(권한 부여 및 위임 포함)이 있는 Azure 사용자가 완료해야 합니다. 이 요구 사항을 충족하는 일반적인 역할은 소유자, 계정 관리자 또는 사용자 액세스 관리자기여자의 조합입니다. Azure Digital Twins 역할의 권한 요구 사항에 대한 자세한 내용은 인스턴스 및 인증 설정을 참조하세요.

액세스 역할 할당

Azure 함수에는 전달자 토큰을 전달해야 합니다. 전달자 토큰이 전달되었는지 확인하려면 함수 앱에 Azure Digital Twins 인스턴스에 대한 Azure Digital Twins 데이터 소유자 역할을 부여합니다. 그러면 함수 앱에 인스턴스에 대한 데이터 평면 작업을 수행할 수 있는 권한이 제공됩니다.

  1. 다음 명령을 사용하여 함수에 대한 시스템 관리 ID를 만듭니다(함수에 이미 있는 경우 이 명령은 세부 정보를 출력함). 출력의 principalId 필드를 기록해 두세요. 이 ID를 사용하여 다음 단계에서 해당 권한을 부여할 수 있도록 함수를 참조합니다.

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>	
    
  2. 다음 명령에 principalId 값을 사용하여 함수에 Azure Digital Twins 인스턴스의 Azure Digital Twins 데이터 소유자 역할을 부여합니다.

    az dt role-assignment create --dt-name <your-Azure-Digital-Twins-instance> --assignee "<principal-ID>" --role "Azure Digital Twins Data Owner"
    

애플리케이션 설정 구성

다음으로, 환경 변수를 설정하여 함수에서 Azure Digital Twins 인스턴스의 URL에 액세스할 수 있도록 합니다.

Azure Digital Twins 인스턴스의 URL은 인스턴스의 호스트 이름 앞에 https://가 추가되어 만들어집니다. 인스턴스의 모든 속성과 함께 호스트 이름을 확인하려면 az dt show --dt-name <your-Azure-Digital-Twins-instance> 명령을 실행합니다.

다음 명령은 인스턴스에 액세스해야 할 때마다 함수에서 사용할 인스턴스의 URL에 대한 환경 변수를 설정합니다.

az functionapp config appsettings set --resource-group <your-resource-group> --name <your-function-app-name> --settings "ADT_SERVICE_URL=https://<your-Azure-Digital-Twins-instance-host-name>"

엔드포인트에 함수 연결

다음으로, 앞에서 만든 Event Grid 엔트포인트에 Azure 함수를 구독합니다. 이렇게 하면 데이터가 Event Grid 토픽을 통해 업데이트된 트윈에서 함수로 흐를 수 있고, 그러면 함수가 이벤트 정보를 사용하여 필요에 따라 다른 트윈을 업데이트할 수 있습니다.

Azure 함수를 구독하려면 앞에서 만든 Event Grid 항목에서 Azure 함수로 데이터를 전송하는 Event Grid 구독을 만듭니다.

다음 CLI 명령을 사용하여 구독 ID, 리소스 그룹, 함수 앱 및 함수 이름에 대한 자리 표시자를 입력합니다.

az eventgrid event-subscription create --name <name-for-your-event-subscription> --source-resource-id /subscriptions/<subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.EventGrid/topics/<your-event-grid-topic> --endpoint-type azurefunction --endpoint /subscriptions/<subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Web/sites/<your-function-app-name>/functions/<function-name> 

이제 함수는 Event Grid 항목을 통해 이벤트를 수신할 수 있습니다. 데이터 흐름 설정이 완료되었습니다.

결과 테스트 및 확인

마지막 단계는 트윈을 업데이트하고 Azure 함수의 논리에 따라 관련 트윈이 업데이트되는지 확인하여 흐름이 작동하는지 확인하는 것입니다.

프로세스를 시작하려면 이벤트 흐름의 원본인 트윈을 업데이트합니다. Azure CLI, Azure Digital Twins SDK 또는 Azure Digital Twins REST API를 사용하여 업데이트할 수 있습니다.

다음으로, Azure Digital Twins 인스턴스에서 관련 트윈을 쿼리합니다. Azure CLI 또는 Azure Digital Twins REST API 및 SDK를 사용할 수 있습니다. 트윈이 데이터를 수신하고 예상대로 업데이트했는지 확인합니다.

다음 단계

이 문서에서는 Azure Digital Twins에서 트윈 간 이벤트 처리를 설정합니다. 다음으로, IoT 허브에서 원격 분석 수집에 따라 IoT 허브 디바이스에서 들어오는 원격 분석을 기반으로 이 흐름을 자동으로 트리거하도록 Azure 함수를 설정합니다.