Konfigurowanie obsługi zdarzeń bliźniaczej reprezentacji bliźniaczej

W tym artykule pokazano, jak wysyłać zdarzenia z bliźniaczej reprezentacji bliźniaczej do bliźniaczej reprezentacji bliźniaczej, dzięki czemu po zaktualizowaniu jednej cyfrowej reprezentacji bliźniaczej na grafie powiązane bliźniacze reprezentacje bliźniacze mogą również być aktualizowane. Ta obsługa zdarzeń pomoże Ci utworzyć w pełni połączony graf usługi Azure Digital Twins, w którym dane docierają do usługi Azure Digital Twins ze źródeł zewnętrznych, takich jak usługa IoT Hub, są propagowane za pośrednictwem całego grafu.

Aby skonfigurować tę obsługę zdarzeń bliźniaczej reprezentacji bliźniaczej, utworzysz funkcję platformy Azure, która będzie obserwowała zdarzenia cyklu życia bliźniaczej reprezentacji. Funkcja rozpoznaje, które zdarzenia powinny mieć wpływ na inne bliźniacze reprezentacje na grafie, i używa danych zdarzenia do odpowiedniego zaktualizowania dotkniętych bliźniaczych reprezentacji.

Wymagania wstępne

Aby skonfigurować obsługę bliźniaczej reprezentacji bliźniaczej, musisz pracować z wystąpieniem usługi Azure Digital Twins. Aby uzyskać instrukcje dotyczące tworzenia wystąpienia, zobacz Konfigurowanie wystąpienia i uwierzytelniania usługi Azure Digital Twins. Wystąpienie powinno zawierać co najmniej dwie reprezentacje bliźniacze, między którymi chcesz wysyłać dane.

Opcjonalnie możesz również skonfigurować automatyczne pozyskiwanie danych telemetrycznych za pośrednictwem usługi IoT Hub dla bliźniaczych reprezentacji. Ten proces nie jest wymagany do wysyłania danych z bliźniaczej reprezentacji bliźniaczej do bliźniaczej reprezentacji bliźniaczej, ale jest to ważny element kompletnego rozwiązania, w którym graf bliźniaczej reprezentacji jest oparty na telemetrii urządzenia na żywo.

Wysyłanie zdarzeń bliźniaczych do punktu końcowego

Aby skonfigurować obsługę zdarzeń bliźniaczej reprezentacji bliźniaczej, zacznij od utworzenia punktu końcowego w usłudze Azure Digital Twins i trasy do tego punktu końcowego. Bliźniacze reprezentacje przechodzące aktualizację będą używać trasy do wysyłania informacji o ich zdarzeniach aktualizacji do punktu końcowego (gdzie usługa Event Grid może pobrać je później i przekazać je do funkcji platformy Azure na potrzeby przetwarzania).

Tworzenie tematu usługi Event Grid

Event Grid to usługa platformy Azure, która ułatwia kierowanie i dostarczanie zdarzeń z usług platformy Azure do innych miejsc na platformie Azure. Możesz utworzyć temat usługi Event Grid w celu zbierania określonych zdarzeń ze źródła, a następnie subskrybenci mogą nasłuchiwać tematu w celu odbierania zdarzeń w miarę ich przechodzenia.

W interfejsie wiersza polecenia platformy Azure uruchom następujące polecenie, aby utworzyć temat usługi Event Grid:

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

Dane wyjściowe tego polecenia to informacje o utworzonym temacie usługi Event Grid. Zapisz nazwę nadaną tematowi usługi Event Grid, ponieważ będzie on używany później.

Tworzenie punktu końcowego

Następnie utwórz punkt końcowy usługi Event Grid w usłudze Azure Digital Twins, który połączy wystąpienie z tematem usługi Event Grid. Użyj poniższego polecenia, wypełniając nazwę tematu usługi Event Grid z poprzedniego kroku i inne pola symboli zastępczych zgodnie z potrzebami.

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>

Dane wyjściowe tego polecenia to informacje o utworzonym punkcie końcowym.

provisioningState Wyszukaj pole w danych wyjściowych i sprawdź, czy wartość to "Powodzenie".

Screenshot of the result of the endpoint query in the Cloud Shell of the Azure portal, showing the endpoint with a provisioningState of Succeeded.

Może również powiedzieć "Aprowizowanie", co oznacza, że punkt końcowy jest nadal tworzony. Jeśli tak, zaczekaj kilka sekund i uruchom następujące polecenie, aby sprawdzić stan punktu końcowego. Powtarzaj, dopóki nie provisioningState zostanie wyświetlony komunikat "Powodzenie".

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

Zapisz nazwę punktu końcowego, ponieważ będzie on używany później.

Tworzenie trasy

Następnie utwórz trasę usługi Azure Digital Twins, która wysyła zdarzenia do utworzonego punktu końcowego usługi Event Grid.

Użyj następującego polecenia interfejsu wiersza polecenia, wypełniając nazwę punktu końcowego z poprzedniego kroku i inne pola symboli zastępczych zgodnie z potrzebami. To polecenie przekazuje wszystkie zdarzenia występujące na grafie bliźniaczej reprezentacji.

Napiwek

Zdarzenia można ograniczyć tylko do określonych, jeśli chcesz, używając filtrów.

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>

Dane wyjściowe tego polecenia to niektóre informacje o utworzonej trasie.

Uwaga

Punkty końcowe (z poprzedniego kroku) muszą zostać zakończone aprowizację, zanim będzie można skonfigurować trasę zdarzeń, która z nich korzysta. Jeśli tworzenie trasy zakończy się niepowodzeniem, ponieważ punkty końcowe nie są gotowe, zaczekaj kilka minut, a następnie spróbuj ponownie.

Tworzenie funkcji platformy Azure w celu zaktualizowania reprezentacji bliźniaczych

Następnie utwórz funkcję platformy Azure, która będzie nasłuchiwać w punkcie końcowym i odbierać zdarzenia bliźniaczej reprezentacji, które są tam wysyłane za pośrednictwem trasy. Logika funkcji powinna używać informacji w zdarzeniach, aby określić, jakie inne bliźniacze reprezentacje muszą zostać zaktualizowane, a następnie wykonać aktualizacje.

  1. Najpierw utwórz nowy projekt usługi Azure Functions.

    Możesz to zrobić przy użyciu programu Visual Studio (aby uzyskać instrukcje, zobacz Tworzenie usługi Azure Functions przy użyciu programu Visual Studio), Visual Studio Code (aby uzyskać instrukcje, zobacz Tworzenie funkcji języka C# na platformie Azure przy użyciu programu Visual Studio Code) lub interfejs wiersza polecenia platformy Azure (aby uzyskać instrukcje, zobacz Tworzenie funkcji języka C# na platformie Azure z poziomu wiersza polecenia).

  2. Dodaj następujące pakiety do projektu (możesz użyć menedżera pakietów NuGet programu Visual Studio lub polecenia dotnet add package w narzędziu wiersza polecenia).

  3. Wypełnij logikę funkcji. Przykładowy kod funkcji można wyświetlić w kilku scenariuszach w repozytorium azure-digital-twins-getting-started , aby ułatwić rozpoczęcie pracy.

  4. Opublikuj funkcję na platformie Azure przy użyciu preferowanej metody.

    Aby uzyskać instrukcje dotyczące publikowania funkcji przy użyciu programu Visual Studio, zobacz Tworzenie usługi Azure Functions przy użyciu programu Visual Studio. Aby uzyskać instrukcje dotyczące publikowania funkcji przy użyciu programu Visual Studio Code, zobacz Tworzenie funkcji języka C# na platformie Azure przy użyciu programu Visual Studio Code. Aby uzyskać instrukcje dotyczące publikowania funkcji przy użyciu interfejsu wiersza polecenia platformy Azure, zobacz Tworzenie funkcji języka C# na platformie Azure z poziomu wiersza polecenia.

Po zakończeniu procesu publikowania funkcji możesz użyć tego polecenia interfejsu wiersza polecenia platformy Azure, aby sprawdzić, czy publikowanie zakończyło się pomyślnie. Istnieją symbole zastępcze dla grupy zasobów, nazwa aplikacji funkcji i nazwa określonej funkcji. Polecenie wyświetli informacje o funkcji.

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

Konfigurowanie aplikacji funkcji

Aby funkcja mogła uzyskać dostęp do usługi Azure Digital Twins, potrzebuje pewnych informacji o wystąpieniu i uprawnieniach dostępu do niego. W tej sekcji przypiszesz rolę dostępu dla funkcji i skonfigurujesz ustawienia aplikacji, aby można było znaleźć wystąpienie i uzyskać do niego dostęp.

Uruchom następujące polecenia w usłudze Azure Cloud Shell lub lokalnym interfejsie wiersza polecenia platformy Azure.

Uwaga

Ta sekcja musi zostać ukończona przez użytkownika platformy Azure, który ma uprawnienia do zarządzania dostępem użytkowników do zasobów platformy Azure, w tym udzielania i delegowania uprawnień. Typowe role spełniające to wymaganie to właściciel, administrator konta lub kombinacja Administracja istratora dostępu użytkowników i współautora. Aby uzyskać więcej informacji na temat wymagań dotyczących uprawnień dla ról usługi Azure Digital Twins, zobacz Konfigurowanie wystąpienia i uwierzytelniania.

Przypisywanie roli dostępu

Funkcja platformy Azure wymaga przekazania do niego tokenu elementu nośnego. Aby upewnić się, że token elementu nośnego został przekazany, przyznaj aplikacji funkcji rolę Właściciela danych usługi Azure Digital Twins dla wystąpienia usługi Azure Digital Twins, która da aplikacji funkcji uprawnienie do wykonywania działań płaszczyzny danych w wystąpieniu.

  1. Użyj następującego polecenia, aby utworzyć tożsamość zarządzaną przez system dla funkcji (jeśli funkcja ma już tę funkcję , to polecenie wyświetli jego szczegóły). Zanotuj principalId pole w danych wyjściowych. Użyjesz tego identyfikatora, aby odwołać się do funkcji, aby można było udzielić jej uprawnień w następnym kroku.

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>	
    
  2. principalId Użyj wartości w poniższym poleceniu, aby nadać funkcji rolę Właściciela danych usługi Azure Digital Twins dla wystąpienia usługi Azure Digital Twins.

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

Konfigurowanie ustawień aplikacji

Następnie ustaw dla niej adres URL wystąpienia usługi Azure Digital Twins, ustawiając dla niego zmienną środowiskową.

Napiwek

Adres URL wystąpienia usługi Azure Digital Twins jest wprowadzany przez dodanie https:// na początku nazwy hosta wystąpienia. Aby wyświetlić nazwę hosta wraz ze wszystkimi właściwościami wystąpienia, uruchom polecenie az dt show --dt-name <your-Azure-Digital-Twins-instance>.

Następujące polecenie ustawia zmienną środowiskową dla adresu URL wystąpienia, którego będzie używać funkcja zawsze, gdy będzie ona potrzebna do uzyskania dostępu do wystąpienia.

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>"

Połączenie funkcji do punktu końcowego

Następnie zasubskrybuj funkcję platformy Azure do utworzonego wcześniej punktu końcowego usługi Event Grid. Dzięki temu dane mogą przepływać ze zaktualizowanej reprezentacji bliźniaczej za pośrednictwem tematu usługi Event Grid do funkcji, która może używać informacji o zdarzeniu do aktualizowania innych reprezentacji bliźniaczych zgodnie z potrzebami.

Aby zasubskrybować funkcję platformy Azure, utworzysz subskrypcję usługi Event Grid, która wysyła dane z tematu usługi Event Grid utworzonego wcześniej do funkcji platformy Azure.

Użyj następującego polecenia interfejsu wiersza polecenia, wypełniając symbole zastępcze identyfikatora subskrypcji, grupy zasobów, aplikacji funkcji i nazwy funkcji.

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> 

Teraz funkcja może odbierać zdarzenia za pośrednictwem tematu usługi Event Grid. Konfiguracja przepływu danych została ukończona.

Testowanie i weryfikowanie wyników

Ostatnim krokiem jest sprawdzenie, czy przepływ działa, aktualizując bliźniacze reprezentacje i sprawdzając, czy powiązane reprezentacje bliźniacze są aktualizowane zgodnie z logiką w funkcji platformy Azure.

Aby rozpocząć proces, zaktualizuj bliźniacza reprezentację, która jest źródłem przepływu zdarzeń. Do aktualizacji można użyć interfejsu wiersza polecenia platformy Azure, zestawu SDK usługi Azure Digital Twins lub interfejsów API REST usługi Azure Digital Twins.

Następnie wykonaj zapytanie dotyczące wystąpienia usługi Azure Digital Twins dla powiązanej reprezentacji bliźniaczej. Możesz użyć interfejsu wiersza polecenia platformy Azure lub interfejsów API REST usługi Azure Digital Twins i zestawu SDK. Sprawdź, czy bliźniacy odebrali dane i zaktualizowali je zgodnie z oczekiwaniami.

Następne kroki

W tym artykule skonfigurowaliśmy obsługę zdarzeń bliźniaczej reprezentacji bliźniaczej w usłudze Azure Digital Twins. Następnie skonfiguruj funkcję platformy Azure, aby wyzwolić ten przepływ automatycznie na podstawie przychodzących danych telemetrycznych z urządzeń usługi IoT Hub: pozyskiwanie danych telemetrycznych z usługi IoT Hub.