IoT Hub-eszköz adatfolyamok (előzetes verzió)

Az Azure IoT Hub-eszközstreamek megkönnyítik a biztonságos kétirányú TCP-alagutak létrehozását 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 az alábbi ábrán 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.

Előnyök

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 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 azt jelenti, hogy a védett és a szabványokon alapuló 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 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 az 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 alábbi ábrán is bemutatunk:

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

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

  3. 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 az alábbi lépések követik.

  4. 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 biztosítja az eszköznek.

  5. 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, valamint 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 önkéntesen történhet a WebSocket eszköz- vagy szolgáltatásprogramokon való bezárásával, vagy a hálózati kapcsolat időtúllépése vagy folyamathiba esetén önkéntelenül. 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ás tivitá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. Ehhez kimenő kapcsolatra van szükség a 443-as porton keresztül ezekhez a végpontokhoz. A végpontokhoz társított állomásnév az IoT Hub Áttekintés lapján található, az alábbi ábrán látható módon:

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öz adatfolyamok erőforrásnaplókon keresztül

Beállíthatja az Azure Monitort, hogy összegyűjtse az IoT Hub által kibocsátott eszközstreamek erőforrásnaplóit. Ez nagyon hasznos lehet a hibaelhárítási forgatókönyvekben.

Az alábbi lépéseket követve hozzon létre egy diagnosztikai beállítást az IoT Hub eszközstream-naplóinak az Azure Monitor-naplókba való küldéséhez:

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

  2. Adjon nevet a diagnosztikai beállításnak, és válassza az Eszköz adatfolyamok 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.

    Enable device streams logs

  3. 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ában, és a következőkkel rendelkeznek Category=DeviceStreams: Vegye figyelembe, hogy egy művelet után néhány percig is eltarthat, amíg a naplók megjelennek a táblában.

    Ahogy alább látható, 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.

Régiónkénti rendelkezésre állás

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.

Következő lépések

Az eszközstreamekről az alábbi hivatkozások segítségével tudhat meg többet.