IoT Hub-Endpunkte
Azure IoT Hub macht verschiedene Endpunkte verfügbar, um die Geräte und Dienste zu unterstützen, die mit dem Dienst interagieren.
Hinweis
Einige der in diesem Artikel erwähnten Features (wie Cloud-zu-Gerät-Messaging, Gerätezwillinge und Geräteverwaltung) stehen nur im Standard-Tarif von IoT Hub zur Verfügung. Weitere Informationen zu den IoT Hub-Tarifen „Basic“ und „Standard/Free“ finden Sie unter Wählen des richtigen IoT Hub-Tarifs für Ihre Lösung.
IoT Hub-Namen
Sie finden den Hostnamen eines IoT-Hubs im Azure-Portal in der Übersicht des Arbeitsbereichs Ihres IoT-Hubs. Standardmäßig ähnelt der DNS-Name eines IoT-Hubs dem folgenden Beispiel:
{your iot hub name}.azure-devices.net
IoT Hub-Endpunkte für Entwicklung und Verwaltung
Azure IoT Hub ist ein mehrinstanzenfähiger Dienst, der seine Funktionen für zahlreiche Akteure bereitstellt. Das nachstehende Diagramm zeigt die verschiedenen Endpunkte, die von IoT Hub verfügbar gemacht werden.
Die Endpunkte werden in der folgende Liste beschrieben:
Ressourcenanbieter: eine Azure Resource Manager-Schnittstelle. Über diese Schnittstelle können Azure Abonnementbesitzer IoT Hub-Instanzen erstellen und löschen sowie IoT Hub-Eigenschaften aktualisieren. IoT Hub-Eigenschaften steuern SAS-Richtlinien auf Hubebene (im Gegensatz zur Zugriffssteuerung auf Geräteebene) und funktionale Optionen für das Messaging zwischen Cloud und Gerät (Cloud-to-Device, C2D) sowie Gerät und Cloud (Device-to-Cloud, D2C). Der IoT Hub-Ressourcenanbieter ermöglicht außerdem das Exportieren von Geräteidentitäten.
Geräteidentitätsverwaltung: Eine Gruppe von HTTPS-REST-Endpunkten zum Verwalten von Geräteidentitäten (zum Erstellen, Abrufen, Aktualisieren und Löschen). Geräteidentitäten werden zur Geräteauthentifizierung und für die Zugriffssteuerung eingesetzt.
Verwaltung von Gerätezwillingen:Eine Gruppe von dienstseitigen HTTPS-REST-Endpunkten zum Abfragen und Aktualisieren von Gerätezwillingen (Updatetags und Eigenschaften)
Auftragsverwaltung: Eine Gruppe von dienstseitigen HTTPS-REST-Endpunkten zum Abfragen und Verwalten von Aufträgen
Geräteendpunkte: Eine Gruppe von Endpunkten für jedes Gerät in der Identitätsregistrierung. Sofern nicht anders angegeben, werden diese Endpunkte über die Protokolle MQTT v3.1.1, HTTPS 1.1 und AMQP 1.0 verfügbar gemacht. AMQP und MQTT stehen auch über WebSockets an Port 443 zur Verfügung. Diese Geräteendpunkte können Folgendes:
Senden von Gerät-zu-Cloud (D2C)-Nachrichten
Empfangen von Cloud-zu-Gerät-Nachrichten
Dateiuploads initiieren
Abrufen und Aktualisieren von Gerätezwillingseigenschaften (HTTPS wird nicht unterstützt)
Empfangen von Anforderungen von direkten Methoden (HTTPS wird nicht unterstützt)
Dienstendpunkte: Eine Reihe von Endpunkten, über die Ihr Lösungs-Back-End mit Ihren Geräten kommunizieren kann. Mit einer einzigen Ausnahme werden diese Endpunkte nur über die Protokolle AMQP und „AMQP über WebSockets“ verfügbar gemacht. Der Endpunkt für den Aufruf direkter Methoden wird über das HTTPS-Protokoll verfügbar gemacht.
Empfangen von Geräte-zu-Cloud-Nachrichten: Dieser Endpunkt ist der integrierte Endpunkt, der in den Nachrichtenroutingkonzepten erläutert wird. Ein Back-End-Dienst kann ihn zum Lesen der D2C-Nachrichten verwenden, die Ihre Geräte senden. Zusätzlich zu diesem integrierten Endpunkt können Sie für Ihren IoT-Hub benutzerdefinierte Endpunkte erstellen.
Senden von Cloud-zu-Gerät-Nachrichten und Empfangen von Übermittlungsbestätigungen
Empfangen von Dateiuploadbenachrichtigungen
Aufrufen der direkten Methode
Im Artikel zu Azure IoT Hub SDKs werden die verschiedenen Möglichkeiten zum Zugriff auf diese Endpunkte beschrieben.
Alle IoT Hub-Endpunkte verwenden das TLS-Protokoll, und Endpunkte werden niemals für unverschlüsselte/unsichere Kanäle verfügbar gemacht.
Wichtig
Die folgenden Funktionen für Geräte, die die Authentifizierung der X.509-Zertifizierungsstelle (Certificate Authority, CA) verwenden, sind noch nicht allgemein verfügbar, und der Vorschaumodus muss aktiviert werden:
- HTTPS, MQTT über WebSockets und AMQP über WebSockets-Protokolle.
- Dateiuploads (alle Protokolle).
Diese Features sind auf Geräten, die die X.509-Fingerabdruckauthentifizierung verwenden, allgemein verfügbar. Weitere Informationen zur X.509-Authentifizierung mit IoT Hub finden Sie unter Unterstützte X.509-Zertifikate.
Benutzerdefinierte Endpunkte für das Nachrichtenrouting
Sie können vorhandene Azure-Dienste in Ihren Azure-Abonnements mit Ihrem IoT-Hub verknüpfen, damit sie als Endpunkte für das Nachrichtenrouting fungieren. Diese Endpunkte fungieren als Dienstendpunkte und werden als Senken für Nachrichtenrouten verwendet. Geräte können nicht direkt in diese Endpunkte schreiben. Weitere Informationen zum Nachrichtenrouting finden Sie unter Verwenden des IoT Hub-Nachrichtenroutings zum Senden von D2C-Nachrichten an verschiedene Endpunkte.
IoT Hub unterstützt die folgenden Azure-Dienste als benutzerdefinierte Endpunkte:
- Speichercontainer
- Event Hubs
- Service Bus-Warteschlangen
- Service Bus-Themen
- Cosmos DB
Informationen zu den Grenzwerten für Endpunkte pro Hub finden Sie unter Kontingente und Drosselung.
Integrierter Endpunkt
Sie können standardmäßige Event Hubs-Integration und -SDKs zum Empfangen von D2C-Nachrichten vom integrierten Endpunkt (messages/events) verwenden. Sobald eine Route erstellt wird, werden keine Daten mehr an den integrierten Endpunkt gesendet, es sei denn, eine Route zu diesem integrierten Endpunkt wird erstellt. Auch wenn keine Routen erstellt werden, muss eine Fallbackroute aktiviert werden, um Nachrichten an den integrierten Endpunkt weiterzuleiten. Die Fallbackfunktion ist standardmäßig aktiviert, wenn Sie Ihren Hub über das Portal oder die Befehlszeilenschnittstelle erstellen.
Azure Storage als Routingendpunkt
Es gibt zwei Speicherdienste, an die IoT Hub Nachrichten weiterleiten kann: Azure Blob Storage- und Azure Data Lake Storage Gen2 (ADLS Gen2)-Konten. Beide verwenden Blobs als Speicher. Zur Verwendung von Azure Data Lake Gen2 müssen für das Speicherkonto hierarchische Namespaces aktiviert sein. Weitere Informationen finden Sie unter Erstellen eines Speicherkontos für die Verwendung mit Azure Data Lake Storage.
IoT Hub unterstützt das Schreiben von Daten in Azure Storage in den Formaten Apache Avro und „JSON“. Standardwert: AVRO. Um die JSON-Codierung zu verwenden, müssen Sie in den Systemeigenschaften der Nachricht die Eigenschaft „contentType“ auf application/json und die Eigenschaft „contentEncoding“ auf UTF-8 festlegen. Bei diesen beiden Werten wird die Groß-/Kleinschreibung nicht beachtet. Wenn die Inhaltscodierung nicht festgelegt wurde, schreibt IoT Hub die Nachrichten im Base64-codierten Format.
Das Codierungsformat kann nur festgelegt werden, wenn der Endpunkt für Blobspeicher konfiguriert wurde. Bei einem vorhandenen Endpunkt kann es nicht bearbeitet werden.
IoT Hub verarbeitet Nachrichten batchweise und schreibt Daten in den Speicher, wenn der Batch eine bestimmte Größe erreicht oder ein bestimmter Zeitraum verstrichen ist. IoT Hub folgt standardmäßig der nachstehenden Dateibenennungskonvention: {iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}
. Sie können eine beliebige Dateibenennungskonvention verwenden, müssen jedoch alle aufgelisteten Tokens verwenden. Wenn keine Daten zum Schreiben vorhanden sind, schreibt IoT Hub in ein leeres Blob.
Es wird empfohlen, die Blobs oder Dateien aufzulisten und anschließend zu durchlaufen, um sicherzustellen, dass alle Blobs oder Dateien gelesen werden, ohne dass eine Partition vorhanden ist. Der Partitionsbereich könnte sich möglicherweise bei einem von Microsoft initiierten Failover oder einem manuellen Failover in Zusammenhang mit IoT Hub ändern. Sie können die Liste der Blobs oder die Liste der ADLS Gen2-APIs mithilfe der Liste der Blobs-APIs aufzählen, um die gewünschte Liste von Dateien zu erhalten. Zum Beispiel:
public void ListBlobsInContainer(string containerName, string iothub)
{
var storageAccount = CloudStorageAccount(Microsoft.Azure.Storage.Auth.StorageCredentials storageCredentials, bool useHttps);
var cloudBlobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
if (cloudBlobContainer.Exists())
{
var results = cloudBlobContainer.ListBlobs(prefix: $"{iothub}/");
foreach (IListBlobItem item in results)
{
Console.WriteLine(item.Uri);
}
}
}
Service Bus-Warteschlangen und Service Bus-Themen als Routingendpunkt
Für Service Bus-Warteschlangen und -Themen, die als IoT Hub-Endpunkte verwendet werden, dürfen Sitzungen oder Duplikaterkennung nicht aktiviert werden. Wenn eine dieser Optionen aktiviert ist, wird der Endpunkt im Azure-Portal als Nicht erreichbar angezeigt.
Event Hubs als Routingendpunkt
Sie können Daten nicht nur an den mit Event Hubs kompatiblen integrierten Endpunkt, sondern auch an benutzerdefinierte Endpunkte vom Typ „Event Hubs“ weiterleiten.
Azure Cosmos DB als Routingendpunkt
Sie können Daten direkt von IoT Hub an Azure Cosmos DB senden. IoT Hub unterstützt das Schreiben in Cosmos DB in JSON (sofern in „content-type“ für Nachrichten angegeben) oder als base64-codierte Binärdatei.
Zur Unterstützung von umfangreichen Szenarios können Sie synthetische Partitionsschlüssel für den Cosmos DB-Endpunkt aktivieren. Da Cosmos DB ein Hyperscale-Datenspeicher ist, müssen alle in diesen Speicher geschriebenen Daten/Dokumente ein Feld enthalten, das eine logische Partition darstellt. Jede logische Partition hat eine maximale Größe von 20 GB. Sie können den Namen der Partitionsschlüsseleigenschaft in Partitionsschlüsselname angeben. Der Name der Partitionsschlüsseleigenschaft wird auf Containerebene definiert und kann nicht aktualisiert werden.
Sie können den Wert des synthetischen Partitionsschlüssels konfigurieren, indem Sie in Partitionsschlüsselvorlage eine Vorlage angeben, die auf Ihrem geschätzten Datenvolumen basiert. In Fertigungsszenarien könnte beispielsweise erwartet werden, dass sich Ihre logische Partition innerhalb eines Monats dem maximalen Grenzwert von 20 GB nähert. In diesem Fall können Sie einen synthetischen Partitionsschlüssel definieren, der eine Kombination aus der Geräte-ID und dem Monat ist. Der generierte Partitionsschlüsselwert wird der Partitionsschlüsseleigenschaft für jeden neuen Cosmos DB-Datensatz automatisch hinzugefügt, um sicherzustellen, dass jeden Monat logische Partitionen für jedes Gerät erstellt werden.
Achtung
Wenn Sie die systemseitig zugewiesene verwaltete Identität für die Authentifizierung bei Cosmos DB verwenden, müssen Sie der Identität mithilfe der Azure-Befehlszeilenschnittstelle (Azure CLI) oder mithilfe von Azure PowerShell die integrierte Rollendefinition „Integrierter Mitwirkender an Cosmos DB-Daten“ zuweisen. Die Rollenzuweisung für Cosmos DB wird vom Azure-Portal zurzeit nicht unterstützt. Weitere Informationen zu den verschiedenen Rollen finden Sie unter Konfigurieren des rollenbasierten Zugriffs für Azure Cosmos DB. Informationen zum Zuweisen von Rollen über die CLI finden Sie unter Verwalten von Azure Cosmos DB-SQL-Rollenressourcen.
Endpunktintegrität
Sie können die REST-API Get Endpoint Health (Endpunktintegrität abrufen) verwenden, um den Integritätsstatus der Endpunkte abzurufen. Die Verwendung von IoT Hub-Routingmetriken bezüglich der Latenz bei der Nachrichtenweiterleitung wird empfohlen, um Fehler zu identifizieren und zu debuggen, wenn die Integrität des Endpunkts „Inaktiv“ oder „Fehlerhaft“ lautet. Es ist zu erwarten, dass die Latenz höher ist, wenn der Endpunkt einen dieser Status aufweist. Weitere Informationen zur Verwendung von IoT Hub-Metriken finden Sie unter Überwachen von IoT Hub.
Integritätsstatus | BESCHREIBUNG |
---|---|
healthy | Der Endpunkt akzeptiert Nachrichten erwartungsgemäß. |
Fehlerhaft | Vom Endpunkt werden keine Nachrichten akzeptiert, und von IoT Hub wird versucht, Nachrichten erneut an diesen Endpunkt zu senden. |
Unbekannt | Von IoT Hub wurde nicht versucht, Nachrichten an diesen Endpunkt zu übermitteln. |
Beeinträchtigt | Vom Endpunkt werden Nachrichten langsamer als erwartet akzeptiert, oder der Endpunkt wird wiederhergestellt, nachdem er sich in einem fehlerhaften Zustand befand. |
Inaktiv | Von IoT Hub werden keine Nachrichten mehr an diesen Endpunkt übermittelt. Das erneute Senden von Nachrichten an diesen Endpunkt war nicht erfolgreich. |
Nächste Schritte
Informieren Sie sich ausführlicher über diese Themen: