IoT Hub-slutpunkter
Azure IoT Hub exponerar olika slutpunkter för att stödja de enheter och tjänster som interagerar med den.
Kommentar
Några av de funktioner som nämns i den här artikeln, t.ex. moln till enhet-meddelanden, enhetstvillingar och enhetshantering, är bara tillgängliga på IoT Hubs standardnivå. Mer information om de grundläggande och standard-/kostnadsfria IoT Hub-nivåerna finns i Välj rätt IoT Hub-nivå för din lösning.
IoT Hub-namn
Du hittar värdnamnet för en IoT-hubb i Azure-portalen i IoT-hubbens arbetsfönster Översikt . Som standard ser DNS-namnet på en IoT-hubb ut som följande exempel:
{your iot hub name}.azure-devices.net
IoT Hub-slutpunkter för utveckling och hantering
Azure IoT Hub är en tjänst för flera klientorganisationer som exponerar dess funktioner för olika aktörer. Följande diagram visar de olika slutpunkter som IoT Hub exponerar.
I följande lista beskrivs slutpunkterna:
Resursprovider: ett Azure Resource Manager-gränssnitt . Med det här gränssnittet kan Azure-prenumerationsägare skapa och ta bort IoT-hubbar och uppdatera IoT Hub-egenskaper. IoT Hub-egenskaper styr principer för delad åtkomst på hubbnivå, till skillnad från åtkomstkontroll på enhetsnivå och funktionella alternativ för meddelanden från moln till enhet och enhet till moln. Med IoT Hub-resursprovidern kan du också exportera enhetsidentiteter.
Enhetsidentitetshantering: en uppsättning HTTPS REST-slutpunkter för att hantera enhetsidentiteter (skapa, hämta, uppdatera och ta bort). Enhetsidentiteter används för enhetsautentisering och åtkomstkontroll.
Hantering av enhetstvillingar: en uppsättning tjänstriktade HTTPS REST-slutpunkter för att fråga och uppdatera enhetstvillingar (uppdateringstaggar och egenskaper).
Jobbhantering: en uppsättning tjänstinriktade HTTPS REST-slutpunkter för att fråga och hantera jobb.
Enhetsslutpunkter: en uppsättning slutpunkter för varje enhet i identitetsregistret. Förutom där detta anges exponeras dessa slutpunkter med MQTT v3.1.1, HTTPS 1.1 och AMQP 1.0-protokoll . AMQP och MQTT är också tillgängliga via WebSockets på port 443. Dessa enhetsslutpunkter omfattar:
Skicka meddelanden från enhet till moln
Ta emot meddelanden från moln till enhet
Initiera filuppladdningar
Hämta och uppdatera egenskaper för enhetstvillingar (HTTPS stöds inte)
Ta emot begäranden om direktmetoder (HTTPS stöds inte)
Tjänstslutpunkter: en uppsättning slutpunkter för din lösnings serverdel för att kommunicera med dina enheter. Med ett undantag exponeras dessa slutpunkter endast med hjälp av protokollen AMQP och AMQP via WebSockets. Slutpunkten för direktmetodanrop exponeras via HTTPS-protokollet.
Ta emot meddelanden från enhet till moln: Den här slutpunkten är den inbyggda slutpunkten som beskrivs i begreppen för meddelanderoutning. En serverdelstjänst kan använda den för att läsa meddelanden från enheten till molnet som skickas av dina enheter. Du kan skapa anpassade slutpunkter på din IoT-hubb utöver den här inbyggda slutpunkten.
Skicka meddelanden från moln till enhet och ta emot leveransbekräftelser
Ta emot meddelanden om filuppladdning
Anropa direktmetod
I artikeln Azure IoT Hub SDK:er beskrivs de olika sätten att komma åt dessa slutpunkter.
Alla IoT Hub-slutpunkter använder TLS-protokollet och ingen slutpunkt exponeras någonsin i okrypterade/oskyddade kanaler.
Viktigt!
Följande funktioner för enheter som använder X.509-certifikatutfärdarautentisering (CA) är ännu inte allmänt tillgängliga och förhandsgranskningsläget måste vara aktiverat:
- HTTPS, MQTT över WebSockets och AMQP via WebSockets-protokoll.
- Filuppladdningar (alla protokoll).
Dessa funktioner är allmänt tillgängliga på enheter som använder X.509 tumavtrycksautentisering. Mer information om X.509-autentisering med IoT Hub finns i X.509-certifikat som stöds.
Anpassade slutpunkter för meddelanderoutning
Du kan länka befintliga Azure-tjänster i dina Azure-prenumerationer till din IoT-hubb för att fungera som slutpunkter för meddelanderoutning. Dessa slutpunkter fungerar som tjänstslutpunkter och används som mottagare för meddelandevägar. Enheter kan inte skriva direkt till dessa slutpunkter. Mer information om meddelanderoutning finns i Använda IoT Hub-meddelanderoutning för att skicka meddelanden från enhet till moln till olika slutpunkter.
IoT Hub stöder för närvarande följande Azure-tjänster som anpassade slutpunkter:
- Lagringscontainrar
- Event Hubs
- Service Bus-köer
- Service Bus-avsnitt
- Cosmos DB
Begränsningar för slutpunkter per hubb finns i Kvoter och begränsning.
Inbyggd slutpunkt
Du kan använda Standard Event Hubs-integrering och SDK:er för att ta emot meddelanden från enhet till moln från den inbyggda slutpunkten (meddelanden/händelser). När en väg har skapats slutar data att flöda till den inbyggda slutpunkten om inte en väg skapas till slutpunkten. Även om inga vägar skapas måste en återställningsväg aktiveras för att dirigera meddelanden till den inbyggda slutpunkten. Återställningen är aktiverad som standard om du skapar din hubb med hjälp av portalen eller CLI.
Azure Storage som routningsslutpunkt
Det finns två lagringstjänster som IoT Hub kan dirigera meddelanden till: Azure Blob Storage - och Azure Data Lake Storage Gen2-konton (ADLS Gen2). Båda dessa använder blobar för sin lagring.
IoT Hub stöder skrivning av data till Azure Storage i Apache Avro-format och JSON-format. Standardvärdet är AVRO. Om du vill använda JSON-kodning anger du egenskapen contentType till egenskapen application/json och contentEncoding till UTF-8 i egenskaperna för meddelandesystemet. Båda dessa värden är skiftlägeskänsliga. Om innehållskodningen inte har angetts skriver IoT Hub meddelandena i bas 64-kodat format.
Kodningsformatet kan bara anges när bloblagringsslutpunkten har konfigurerats. Det går inte att redigera den för en befintlig slutpunkt.
IoT Hub batchar meddelanden och skriver data till lagring när batchen når en viss storlek eller en viss tid har förflutit. IoT Hub använder som standard följande namngivningskonvention för filer: {iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}
.
Du kan använda valfri namngivningskonvention för filer, men du måste använda alla listade token. IoT Hub skriver till en tom blob om det inte finns några data att skriva.
Vi rekommenderar att du listar blobar eller filer och sedan itererar över dem, för att säkerställa att alla blobbar eller filer läse utan att göra några antaganden om partition. Partitionsintervallet kan eventuellt ändras under en Microsoft-initierad redundansväxling eller manuell redundansväxling i IoT Hub. Du kan använda LIST Blobs-API:et för att räkna upp listan över blobar eller ADLS Gen2-API för lista över filer. Till exempel:
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);
}
}
}
Om du vill skapa ett Azure Data Lake Gen2-kompatibelt lagringskonto skapar du ett nytt V2-lagringskonto och väljer Aktivera hierarkiskt namnområde i avsnittet Data Lake Storage Gen2 på fliken Avancerat , enligt följande bild:
Service Bus-köer och Service Bus-ämnen som routningsslutpunkt
Service Bus-köer och ämnen som används som IoT Hub-slutpunkter får inte ha sessioner eller dubblettidentifiering aktiverat. Om något av dessa alternativ är aktiverat visas slutpunkten som Ej åtkomlig i Azure-portalen.
Event Hubs som en routningsslutpunkt
Förutom den inbyggda Event Hubs-kompatibla slutpunkten kan du även dirigera data till anpassade slutpunkter av typen Event Hubs.
Azure Cosmos DB som routningsslutpunkt
Du kan skicka data direkt till Azure Cosmos DB från IoT Hub. IoT Hub stöder skrivning till Cosmos DB i JSON (om det anges i meddelandeinnehållstypen) eller som bas 64-kodad binär fil.
För att stödja storskaliga scenarier kan du aktivera syntetiska partitionsnycklar för Cosmos DB-slutpunkten. Eftersom Cosmos DB är ett hyperskala-datalager måste alla data/dokument som skrivs till det innehålla ett fält som representerar en logisk partition. Varje logisk partition har en maximal storlek på 20 GB. Du kan ange egenskapsnamnet för partitionsnyckeln i partitionsnyckelns namn. Egenskapsnamnet för partitionsnyckeln definieras på containernivå och kan inte ändras när det har angetts.
Du kan konfigurera värdet för den syntetiska partitionsnyckeln genom att ange en mall i mallen Partitionsnyckel baserat på din uppskattade datavolym. I tillverkningsscenarier kan din logiska partition till exempel förväntas närma sig sin maximala gräns på 20 GB inom en månad. I så fall kan du definiera en syntetisk partitionsnyckel som en kombination av enhets-ID:t och månaden. Det genererade partitionsnyckelvärdet läggs automatiskt till i partitionsnyckelegenskapen för varje ny Cosmos DB-post, vilket säkerställer att logiska partitioner skapas varje månad för varje enhet.
Varning
Om du använder den systemtilldelade hanterade identiteten för autentisering till Cosmos DB måste du använda Azure CLI eller Azure PowerShell för att tilldela den inbyggda rolldefinitionen för Cosmos DB-datadeltagare till identiteten. Rolltilldelning för Cosmos DB stöds för närvarande inte från Azure-portalen. Mer information om de olika rollerna finns i Konfigurera rollbaserad åtkomst för Azure Cosmos DB. Information om hur du tilldelar roller via CLI finns i Hantera Azure Cosmos DB SQL-rollresurser.
Slutpunktshälsa
Du kan använda REST API :et Get Endpoint Health för att hämta slutpunkternas hälsostatus. Vi rekommenderar att du använder IoT Hub-routningsmått relaterade till svarstid för routningsmeddelanden för att identifiera och felsöka fel när slutpunktshälsan är död eller inte är felfri, eftersom vi förväntar oss att svarstiden blir högre när slutpunkten är i något av dessa tillstånd. Mer information om hur du använder IoT Hub-mått finns i Övervaka IoT Hub.
Hälsostatus | beskrivning |
---|---|
frisk | Slutpunkten tar emot meddelanden som förväntat. |
ohälsosam | Slutpunkten accepterar inte meddelanden och IoT Hub försöker skicka meddelanden till den här slutpunkten igen. |
okänt | IoT Hub har inte försökt leverera meddelanden till den här slutpunkten. |
Försämras | Slutpunkten tar emot meddelanden som är långsammare än förväntat eller återställs från ett feltillstånd. |
död | IoT Hub levererar inte längre meddelanden till den här slutpunkten. Det gick inte att skicka meddelanden till den här slutpunkten igen. |
Nästa steg
Läs mer om följande ämnen: