Punkty końcowe usługi IoT Hub
Usługa Azure IoT Hub udostępnia różne punkty końcowe do obsługi urządzeń i usług, które z nią współdziałają.
Uwaga
Niektóre funkcje wymienione w tym artykule, takie jak obsługa komunikatów w chmurze, bliźniacze reprezentacje urządzeń i zarządzanie urządzeniami, są dostępne tylko w warstwie Standardowa usługi IoT Hub. Aby uzyskać więcej informacji na temat warstw podstawowej i standardowej/bezpłatnej usługi IoT Hub, zobacz Wybieranie odpowiedniej warstwy usługi IoT Hub dla rozwiązania.
Nazwy usługi IoT Hub
Nazwę hosta centrum IoT hub można znaleźć w witrynie Azure Portal w okienku roboczym Omówienie centrum IoT Hub. Domyślnie nazwa DNS centrum IoT Wygląda jak w poniższym przykładzie:
{your iot hub name}.azure-devices.net
Punkty końcowe usługi IoT Hub na potrzeby programowania i zarządzania
Azure IoT Hub to wielodostępna usługa, która uwidacznia jej funkcjonalność dla różnych podmiotów. Na poniższym diagramie przedstawiono różne punkty końcowe udostępniane przez usługę IoT Hub.
Poniższa lista zawiera opis punktów końcowych:
Dostawca zasobów: interfejs usługi Azure Resource Manager . Ten interfejs umożliwia właścicielom subskrypcji platformy Azure tworzenie i usuwanie centrów IoT oraz aktualizowanie właściwości centrum IoT Hub. Właściwości usługi IoT Hub zarządzają zasadami dostępu współdzielonego na poziomie centrum, w przeciwieństwie do kontroli dostępu na poziomie urządzenia oraz opcjami funkcjonalnymi obsługi komunikatów z chmury do urządzeń i urządzeń do chmury. Dostawca zasobów usługi IoT Hub umożliwia również eksportowanie tożsamości urządzeń.
Zarządzanie tożsamościami urządzeń: zestaw punktów końcowych REST PROTOKOŁU HTTPS do zarządzania tożsamościami urządzeń (tworzenie, pobieranie, aktualizowanie i usuwanie). Tożsamości urządzeń są używane do uwierzytelniania urządzeń i kontroli dostępu.
Zarządzanie bliźniaczymi reprezentacjami urządzeń: zestaw punktów końcowych REST HTTPS z obsługą usługi do wykonywania zapytań i aktualizowania bliźniaczych reprezentacji urządzeń (tagów aktualizacji i właściwości).
Zarządzanie zadaniami: zestaw punktów końcowych REST HTTPS przeznaczonych do wykonywania zapytań o zadania i zarządzania nimi.
Punkty końcowe urządzeń: zestaw punktów końcowych dla każdego urządzenia w rejestrze tożsamości. Z wyjątkiem przypadków, w których te punkty końcowe są uwidocznione przy użyciu protokołów MQTT w wersji 3.1.1, HTTPS 1.1 i AMQP 1.0 . Protokół AMQP i MQTT są również dostępne za pośrednictwem obiektów WebSocket na porcie 443. Te punkty końcowe urządzeń obejmują:
Wysyłanie komunikatów z urządzenia do chmury
Odbieranie komunikatów z chmury do urządzenia
Inicjowanie przekazywania plików
Pobieranie i aktualizowanie właściwości bliźniaczej reprezentacji urządzenia (protokół HTTPS nie jest obsługiwany)
Odbieranie żądań metod bezpośrednich (protokół HTTPS nie jest obsługiwany)
Punkty końcowe usługi: zestaw punktów końcowych zaplecza rozwiązania do komunikowania się z urządzeniami. Z jednym wyjątkiem te punkty końcowe są widoczne tylko przy użyciu protokołów AMQP i AMQP za pośrednictwem protokołów WebSocket. Punkt końcowy wywołania metody bezpośredniej jest uwidaczniony za pośrednictwem protokołu HTTPS.
Odbieranie komunikatów z urządzenia do chmury: ten punkt końcowy jest wbudowanym punktem końcowym omówionymi w pojęciach dotyczących routingu komunikatów. Usługa zaplecza może jej używać do odczytywania komunikatów z urządzenia do chmury wysyłanych przez urządzenia. Oprócz tego wbudowanego punktu końcowego można tworzyć niestandardowe punkty końcowe w centrum IoT Hub.
Wysyłanie komunikatów z chmury do urządzenia i odbieranie potwierdzenia dostarczenia
Otrzymywanie powiadomień o przekazaniu plików
Wywoływanie metody bezpośredniej
W artykule Zestawy SDK usługi Azure IoT Hub opisano różne sposoby uzyskiwania dostępu do tych punktów końcowych.
Wszystkie punkty końcowe usługi IoT Hub używają protokołu TLS , a żaden punkt końcowy nigdy nie jest uwidaczniany w niezaszyfrowanych/niezabezpieczonych kanałach.
Ważne
Następujące funkcje dla urządzeń korzystających z uwierzytelniania urzędu certyfikacji X.509 nie są jeszcze ogólnie dostępne, a tryb podglądu musi być włączony:
- HTTPS, MQTT przez protokoły WebSockets i AMQP za pośrednictwem protokołów WebSocket.
- Przekazywanie plików (wszystkie protokoły).
Te funkcje są ogólnie dostępne na urządzeniach korzystających z uwierzytelniania odcisku palca X.509. Aby dowiedzieć się więcej na temat uwierzytelniania X.509 w usłudze IoT Hub, zobacz Obsługiwane certyfikaty X.509.
Niestandardowe punkty końcowe na potrzeby routingu komunikatów
Istniejące usługi platformy Azure w subskrypcjach platformy Azure można połączyć z centrum IoT Hub, aby działać jako punkty końcowe na potrzeby routingu komunikatów. Te punkty końcowe działają jako punkty końcowe usługi i są używane jako ujścia tras komunikatów. Urządzenia nie mogą zapisywać bezpośrednio w tych punktach końcowych. Aby uzyskać więcej informacji na temat routingu komunikatów, zobacz Używanie routingu komunikatów usługi IoT Hub w celu wysyłania komunikatów z urządzenia do chmury do różnych punktów końcowych.
Usługa IoT Hub obsługuje obecnie następujące usługi platformy Azure jako niestandardowe punkty końcowe:
- Kontenery magazynu
- Event Hubs
- Kolejki usługi Service Bus
- Tematy usługi Service Bus
- Cosmos DB
Aby uzyskać limity dotyczące punktów końcowych na koncentrator, zobacz Limity przydziału i ograniczanie przepustowości.
Wbudowany punkt końcowy
Standardowe zestawy SDK i integracja usługi Event Hubs umożliwiają odbieranie komunikatów z urządzenia do chmury z wbudowanego punktu końcowego (komunikatów/zdarzeń). Po utworzeniu dowolnej trasy dane przestaną przepływać do wbudowanego punktu końcowego, chyba że zostanie utworzona trasa do tego punktu końcowego. Nawet jeśli nie utworzono żadnych tras, należy włączyć trasę rezerwową, aby kierować komunikaty do wbudowanego punktu końcowego. Rezerwa jest domyślnie włączona w przypadku tworzenia centrum przy użyciu portalu lub interfejsu wiersza polecenia.
Usługa Azure Storage jako punkt końcowy routingu
Istnieją dwie usługi magazynu, do których usługa IoT Hub może kierować komunikaty: konta usługi Azure Blob Storage i Azure Data Lake Storage Gen2 (ADLS Gen2). Oba te obiekty używają obiektów blob do przechowywania.
Usługa IoT Hub obsługuje zapisywanie danych w usłudze Azure Storage w formacie Apache Avro i formacie JSON. Wartość domyślna to AVRO. Aby użyć kodowania JSON, ustaw właściwość contentType na właściwość application/json i contentEncoding na WARTOŚĆ UTF-8 we właściwościach systemu komunikatów. Obie te wartości są bez uwzględniania wielkości liter. Jeśli kodowanie zawartości nie jest ustawione, usługa IoT Hub zapisuje komunikaty w formacie zakodowanym w formacie base 64.
Format kodowania można ustawić tylko wtedy, gdy punkt końcowy magazynu obiektów blob jest skonfigurowany; Nie można go edytować dla istniejącego punktu końcowego.
Usługa IoT Hub wsaduje komunikaty i zapisuje dane w magazynie za każdym razem, gdy partia osiągnie określony rozmiar lub jakiś czas upłynie. Usługa IoT Hub domyślnie określa następującą konwencję nazewnictwa plików: {iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}
.
Możesz użyć dowolnej konwencji nazewnictwa plików, ale musisz użyć wszystkich wymienionych tokenów. Usługa IoT Hub zapisuje w pustym obiekcie blob, jeśli nie ma danych do zapisania.
Zalecamy wyświetlenie listy obiektów blob lub plików, a następnie iterowanie nad nimi, aby upewnić się, że wszystkie obiekty blob lub pliki są odczytywane bez wprowadzania żadnych założeń partycji. Zakres partycji może potencjalnie ulec zmianie podczas ręcznego przejścia w tryb failover zainicjowanego przez firmę Microsoft lub usługi IoT Hub. Interfejs API list blobs umożliwia wyliczenie listy obiektów blob lub interfejsu API list ADLS Gen2 dla listy plików. Na przykład:
public void ListBlobsInContainer(string containerName, string iothub)
{
var storageAccount = CloudStorageAccount.Parse(this.blobConnectionString);
var cloudBlobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
if (cloudBlobContainer.Exists())
{
var results = cloudBlobContainer.ListBlobs(prefix: $"{iothub}/");
foreach (IListBlobItem item in results)
{
Console.WriteLine(item.Uri);
}
}
}
Aby utworzyć konto magazynu zgodne z usługą Azure Data Lake Gen2, utwórz nowe konto magazynu w wersji 2 i wybierz pozycję Włącz hierarchiczną przestrzeń nazw z sekcji Data Lake Storage Gen2 na karcie Zaawansowane , jak pokazano na poniższej ilustracji:
Kolejki usługi Service Bus i tematy usługi Service Bus jako punkt końcowy routingu
Kolejki i tematy usługi Service Bus używane jako punkty końcowe usługi IoT Hub nie mogą mieć włączonej sesji ani wykrywania duplikatów . Jeśli którakolwiek z tych opcji jest włączona, punkt końcowy będzie wyświetlany jako Niemożliwy do osiągnięcia w witrynie Azure Portal.
Usługa Event Hubs jako punkt końcowy routingu
Oprócz wbudowanego punktu końcowego zgodnego z usługą Event Hubs można również kierować dane do niestandardowych punktów końcowych typu Event Hubs.
Usługa Azure Cosmos DB jako punkt końcowy routingu
Dane można wysyłać bezpośrednio do usługi Azure Cosmos DB z usługi IoT Hub. Usługa IoT Hub obsługuje zapisywanie w usłudze Cosmos DB w formacie JSON (jeśli określono w typie zawartości komunikatu) lub jako zakodowany w formacie base 64 binarne.
Aby obsługiwać scenariusze o dużej skali, możesz włączyć syntetyczne klucze partycji dla punktu końcowego usługi Cosmos DB. Ponieważ usługa Cosmos DB jest magazynem danych w hiperskali, wszystkie dane/dokumenty zapisywane w nim muszą zawierać pole reprezentujące partycję logiczną. Każda partycja logiczna ma maksymalny rozmiar 20 GB. Nazwę właściwości klucza partycji można określić w polu Nazwa klucza partycji. Nazwa właściwości klucza partycji jest definiowana na poziomie kontenera i nie można jej zmienić po jej ustawieniu.
Możesz skonfigurować syntetyczną wartość klucza partycji, określając szablon w szablonie Klucza partycji na podstawie szacowanego woluminu danych. Na przykład w scenariuszach produkcyjnych partycja logiczna może zbliżać się do maksymalnego limitu 20 GB w ciągu miesiąca. W takim przypadku można zdefiniować syntetyczny klucz partycji jako kombinację identyfikatora urządzenia i miesiąca. Wygenerowana wartość klucza partycji jest automatycznie dodawana do właściwości klucza partycji dla każdego nowego rekordu usługi Cosmos DB, zapewniając, że partycje logiczne są tworzone co miesiąc dla każdego urządzenia.
Uwaga
Jeśli używasz przypisanej przez system tożsamości zarządzanej do uwierzytelniania w usłudze Cosmos DB, musisz użyć interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell, aby przypisać wbudowaną definicję roli współautora danych usługi Cosmos DB do tożsamości. Przypisanie roli dla usługi Cosmos DB nie jest obecnie obsługiwane w witrynie Azure Portal. Aby uzyskać więcej informacji na temat różnych ról, zobacz Konfigurowanie dostępu opartego na rolach dla usługi Azure Cosmos DB. Aby zrozumieć przypisywanie ról za pomocą interfejsu wiersza polecenia, zobacz Zarządzanie zasobami roli SQL usługi Azure Cosmos DB.
Kondycja punktu końcowego
Aby uzyskać stan kondycji punktów końcowych, możesz użyć interfejsu API REST Get Endpoint Health . Zalecamy użycie metryk routingu usługi IoT Hub związanych z opóźnieniem komunikatu rozsyłania w celu zidentyfikowania i debugowania błędów, gdy kondycja punktu końcowego nie działa lub jest w złej kondycji, ponieważ oczekujemy, że opóźnienie będzie wyższe, gdy punkt końcowy znajduje się w jednym z tych stanów. Aby dowiedzieć się więcej na temat korzystania z metryk usługi IoT Hub, zobacz Monitorowanie usługi IoT Hub.
Stan kondycji | opis |
---|---|
zdrowy | Punkt końcowy akceptuje komunikaty zgodnie z oczekiwaniami. |
niezdrowy | Punkt końcowy nie akceptuje komunikatów, a usługa IoT Hub ponowi próbę wysłania komunikatów do tego punktu końcowego. |
Nieznana | Usługa IoT Hub nie próbowała dostarczać komunikatów do tego punktu końcowego. |
Zdegradowanych | Punkt końcowy akceptuje komunikaty wolniej niż oczekiwano lub odzyskuje stan złej kondycji. |
martwy | Usługa IoT Hub nie dostarcza już komunikatów do tego punktu końcowego. Ponowne próby wysyłania komunikatów do tego punktu końcowego nie powiodły się. |
Następne kroki
Dowiedz się więcej o tych tematach: