Freigeben über


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.

Diagramm: Liste integrierter IoT Hub-Endpunkte

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 derzeit 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 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.

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 hat 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. Beispiel:

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);
        }
    }
}

Wenn Sie ein Azure Data Lake Gen2-kompatibles Speicherkonto erstellen möchten, erstellen Sie ein neues V2-Speicherkonto, und wählen Sie auf der Registerkarte Erweitert im Abschnitt Data Lake Storage Gen2 die Option Hierarchischen Namespace aktivieren aus, wie in der folgenden Abbildung gezeigt wird:

Screenshot: Auswählen von Azure Date Lake Gen2-Speicher.

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 mehr geändert werden, sobald er festgelegt wurde.

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: