IoT Hub-eszközstreamek (előzetes verzió)
Az Azure IoT Hub-eszközstreamek megkönnyítik a biztonságos kétirányú TCP-alagutak létrehozását a különböző felhőalapú eszközök közötti kommunikációs forgatókönyvekhez. Az eszközstreameket egy IoT Hub *streamvégpont közvetíti, amely proxyként működik az eszköz és a szolgáltatásvégpontok között. Ez a diagramon látható beállítás különösen akkor hasznos, ha az eszközök hálózati tűzfal mögött vannak, vagy egy magánhálózaton belül találhatók. Ezért az IoT Hub-eszközstreamek segítenek az ügyfeleknek tűzfalbarát módon elérniük az IoT-eszközöket, és nem kell széles körben megnyitniuk a bejövő vagy kimenő hálózati tűzfalportokat.
Az IoT Hub-eszközstreamek használatával az eszközök biztonságosak maradnak, és csak a kimenő TCP-kapcsolatokat kell megnyitniuk az IoT Hub streamvégpontja felé a 443-as porton keresztül. A stream létrehozása után a szolgáltatásoldali és az eszközoldali alkalmazások programozott hozzáféréssel rendelkeznek egy WebSocket ügyfélobjektumhoz, hogy nyers bájtokat küldjenek és fogadjanak egymásnak. Az alagút által biztosított megbízhatósági és rendezési garanciák a TCP-vel egyenértékben jelenik meg.
Juttatások
Az IoT Hub eszközstreamjei a következő előnyöket biztosítják:
Tűzfalbarát biztonságos kapcsolat: Az IoT-eszközök úgy érhetőek el a szolgáltatásvégpontokról, hogy nem nyitják meg a bejövő tűzfalportot az eszközön vagy a hálózati szegélyeken (csak az IoT Hub felé irányuló kimenő kapcsolat szükséges a 443-as porton keresztül).
Hitelesítés: Az alagút eszköz- és szolgáltatásoldalainak egyaránt hitelesíteniük kell az IoT Hubot a megfelelő hitelesítő adataikkal.
Titkosítás: Alapértelmezés szerint az IoT Hub-eszközstreamek TLS-kompatibilis kapcsolatokat használnak. Ez a tényező biztosítja, hogy a forgalom mindig titkosítva legyen, függetlenül attól, hogy az alkalmazás titkosítást használ-e.
A kapcsolat egyszerűsége: Az eszközstreamek használata sok esetben szükségtelenné teszi a virtuális magánhálózatok összetett beállítását az IoT-eszközökhöz való kapcsolódás engedélyezéséhez.
Kompatibilitás a TCP/IP-veremtel: Az IoT Hub eszközstreamjei képesek a TCP/IP-alkalmazások forgalmának kezelésére. Ez a megközelítés azt jelenti, hogy a védett és szabványalapú protokollok széles köre használhatja ezt a funkciót.
Egyszerű használat a magánhálózati beállításokban: A szolgáltatás az eszköz azonosítójára hivatkozva tud kommunikálni az eszközzel az eszköz IP-címe helyett. Ez a tény akkor hasznos, ha egy eszköz egy magánhálózaton belül található, és magánhálózati IP-címmel rendelkezik, vagy ip-címe dinamikusan van hozzárendelve, és ismeretlen a szolgáltatásoldal számára.
Eszközstreamelési munkafolyamatok
Az eszközstream akkor indul el, amikor a szolgáltatás az eszközazonosító megadásával kéri az eszközhöz való csatlakozást. Ez a munkafolyamat különösen illeszkedik egy ügyfél-kiszolgáló kommunikációs modellbe, beleértve az SSH-t és az RDP-t is, ahol a felhasználó távolról szeretne csatlakozni az eszközön futó SSH- vagy RDP-kiszolgálóhoz egy SSH- vagy RDP-ügyfélprogram használatával.
Az eszközstreamek létrehozásának folyamata magában foglalja az eszköz, a szolgáltatás, az IoT Hub fő és streamvégpontjai közötti egyeztetést. Bár az IoT Hub fő végpontja egy eszközstream létrehozását vezényli, a streamvégpont kezeli a szolgáltatás és az eszköz közötti forgalmat.
Eszközstreamek létrehozási folyamata
Az eszközstreamek SDK-val történő programozott létrehozása a következő lépéseket foglalja magában, amelyeket az ábra is ábrázol:
Az eszközalkalmazás előre regisztrál egy visszahívást, hogy értesítést kapjon arról, amikor egy új eszközstreamet kezdeményeznek az eszközön. Ez a lépés általában akkor történik, amikor az eszköz elindul, és csatlakozik az IoT Hubhoz.
A szolgáltatásoldali program szükség esetén eszközstreamet kezdeményez az eszközazonosító (nem az IP-cím) megadásával.
Az IoT Hub az 1. lépésben regisztrált visszahívás meghívásával értesíti az eszközoldali programot. Az eszköz elfogadhatja vagy elutasíthatja a stream kezdeményezési kérését. Ez a logika az alkalmazásforgatókönyvre jellemző lehet. Ha az eszköz elutasítja a streamkérelmet, az IoT Hub ennek megfelelően tájékoztatja a szolgáltatást; ellenkező esetben a következő lépések történnek.
Az eszköz biztonságos kimenő TCP-kapcsolatot hoz létre a streamvégponthoz a 443-as porton keresztül, és frissíti a kapcsolatot egy WebSocketre. A streamvégpont URL-címét és a hitelesítéshez használt hitelesítő adatokat az IoT Hub a 3. lépésben küldött kérés részeként adja meg az eszköznek.
A szolgáltatás értesítést kap a streamet elfogadó eszköz eredményéről, és saját WebSocket-ügyfelet hoz létre a streamvégponton. Hasonlóképpen megkapja a streamvégpont URL-címét és hitelesítési adatait az IoT Hubtól.
A fenti kézfogási folyamat során:
A kézfogási folyamatnak 60 másodpercen belül (2–5. lépés) kell befejeződnie, ellenkező esetben a kézfogás időtúllépéssel meghiúsulna, és a szolgáltatás erről értesítést kap.
A fenti stream-létrehozási folyamat befejeződése után a streamvégpont proxyként fog működni, és a szolgáltatás és az eszköz közötti forgalmat a megfelelő WebSocket-eken keresztül továbbítja.
Az eszköznek és a szolgáltatásnak egyaránt kimenő kapcsolatot kell létesítenie az IoT Hub fő végpontjával és a streamvégponttal a 443-as porton keresztül. Ezeknek a végpontoknak az URL-címe az IoT Hub portáljának Áttekintés lapján érhető el.
A létrehozott stream megbízhatósági és rendezési garanciája a TCP-vel egyenértékben van.
Az IoT Hubhoz és a streamvégponthoz való minden kapcsolat TLS-t használ, és titkosítva van.
Leállítási folyamat
A létrehozott stream akkor fejeződik be, ha az átjáróhoz tartozó TCP-kapcsolatok valamelyike megszakad (a szolgáltatás vagy az eszköz). Ez a művelet önkéntesen elvégezhető, ha bezárja a WebSocketet az eszközön vagy a szolgáltatásprogramokon, vagy akaratlanul, ha a hálózati kapcsolat időtúllépése vagy folyamathiba történik. Az eszköz vagy szolgáltatás streamvégponthoz való kapcsolatának megszűnésekor a másik TCP-kapcsolat is (kényszerítve) megszakad, és szükség esetén a szolgáltatás és az eszköz felelős a stream újbóli létrehozásáért.
Csatlakozási követelmények
Az eszköz- és szolgáltatásoldalaknak egyaránt képesnek kell lenniük TLS-kompatibilis kapcsolatok létrehozására az IoT Hubhoz és annak streamvégpontjaihoz. Ez a helyzet kimenő kapcsolatot igényel a 443-as porton keresztül ezekhez a végpontokhoz. Az ezekhez a végpontokhoz társított állomásnév az IoT Hub Áttekintés lapján található, ahogyan az ábrán látható:
Másik lehetőségként a végpontok adatai lekérhetők az Azure CLI-vel a központ tulajdonságok szakaszában, property.hostname
pontosabban a property.deviceStreams
kulcsokkal.
az iot hub devicestream show --name <YourIoTHubName>
A kimenet az összes végpont JSON-objektuma, amelyhez a központ eszközének és szolgáltatásának csatlakoznia kell egy eszközstream létrehozásához.
{
"streamingEndpoints": [
"https://<YourIoTHubName>.<region-stamp>.streams.azure-devices.net"
]
}
Feljegyzés
Győződjön meg arról, hogy telepítette az Azure CLI 2.0.57-es vagy újabb verzióját. A legújabb verziót az Azure CLI telepítése oldalról töltheti le.
Kimenő kapcsolat engedélyezése az eszköz streamvégpontjaihoz
Ahogy a cikk elején említettük, az eszköz kimenő kapcsolatot hoz létre az IoT Hub streamvégponttal az eszközstreamek kezdeményezési folyamata során. Az eszközön vagy annak hálózatán lévő tűzfalaknak engedélyeznie kell a kimenő kapcsolatot a streamelési átjáróhoz a 443-as porton keresztül (vegye figyelembe, hogy a kommunikáció egy TLS használatával titkosított WebSocket-kapcsolaton keresztül történik).
Az eszközstreamelési végpont állomásneve az Azure IoT Hub portál Áttekintés lapján található.
Ezt az információt az Azure CLI-vel is megtalálhatja:
az iot hub devicestream show --name <YourIoTHubName>
Feljegyzés
Győződjön meg arról, hogy telepítette az Azure CLI 2.0.57-es vagy újabb verzióját. A legújabb verziót az Azure CLI telepítése oldalról töltheti le.
Hibaelhárítás eszközstreamek erőforrásnaplóival
Beállíthatja az Azure Monitort, hogy összegyűjtse az IoT Hub által kibocsátott eszközstreamek erőforrásnaplóit. Ez a megközelítés hasznos lehet a hibaelhárítási forgatókönyvekben.
Kövesse az alábbi lépéseket egy diagnosztikai beállítás létrehozásához az IoT Hub eszközstream-naplóinak az Azure Monitor-naplókba való küldéséhez:
Az Azure Portalon lépjen az IoT Hubra. A bal oldali panel Figyelés területén válassza a Diagnosztikai beállítások lehetőséget. Ezután válassza a Diagnosztikai beállítás hozzáadása lehetőséget.
Adjon nevet a diagnosztikai beállításnak, és válassza a DeviceStreams lehetőséget a naplók listájából. Ezután válassza a Küldés a Log Analyticsbe lehetőséget. A rendszer útmutatást kap egy meglévő Log Analytics-munkaterület kiválasztásához vagy egy új létrehozásához.
Miután létrehozott egy diagnosztikai beállítást, amellyel az eszköz streamelési naplóit egy Log Analytics-munkaterületre küldheti, a naplókhoz az IoT Hub bal oldali paneljén a Figyelés területen az Azure Portalon a Naplók lehetőséget választva érheti el. Az eszközstreamek naplói megjelennek a
AzureDiagnostics
táblázatban, és rendelkeznekCategory=DeviceStreams
. Egy művelet után több percig is eltarthat, amíg a naplók megjelennek a táblában.Az itt látható módon a céleszköz identitása és a művelet eredménye is elérhető a naplókban.
Az Azure Monitor IoT Hubbal való használatáról további információt az IoT Hub monitorozása című témakörben talál. Az IoT Hubhoz elérhető összes erőforrásnaplóval, metrikával és táblával kapcsolatos információkért tekintse meg az Azure IoT Hub adatreferenciájának monitorozását.
Regionális elérhetőség
A nyilvános előzetes verzióban az IoT Hub eszközstreamjei az USA középső régiójában, az USA keleti régiójában, az EUAP-ban, Észak-Európában és Délkelet-Ázsiában érhetők el. Győződjön meg arról, hogy a központot ezen régiók valamelyikében hozza létre.
SDK rendelkezésre állása
Az egyes streamek két oldala (az eszköz és a szolgáltatás oldalán) az IoT Hub SDK használatával hozza létre az alagutat. A nyilvános előzetes verzióban az ügyfelek az alábbi SDK-nyelvek közül választhatnak:
A C és C# SDK támogatási eszközstreamjei az eszközoldalon.
A NodeJS és a C# SDK támogatja az eszközstreameket a szolgáltatás oldalán.