Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőre vonatkozik:
IoT Edge 1.5
Fontos
IoT Edge 1.5 LTS a támogatott kiadás. IoT Edge 1,4 LTS 2024. november 12-én véget ért. Ha korábbi kiadást használ, tekintse meg a Update IoT Edge című témakört.
Ez a cikk azt ismerteti, hogyan használható Visual Studio Code IoT Edge modulok hibakeresésére több nyelven. A fejlesztői számítógépén a Visual Studio Code segítségével csatlakozhat, és hibakeresés céljából futtathatja a modulját a helyi vagy távoli modultárolóban.
Ez a cikk két IoT Edge fejlesztési eszköz lépéseit tartalmazza.
- Azure IoT Edge Fejlesztői eszköz parancssori eszköz (CLI). Ezt az eszközt előnyben részesítik a fejlesztéshez.
- Azure IoT Edge eszközök Visual Studio Code bővítményhez. A bővítmény karbantartási módban van.
Válassza ki az eszközverziót a cikk elején található eszközválasztó gombbal.
Visual Studio Code támogatja IoT Edge modulok írását a következő programozási nyelvekben:
- C# és C# Azure Functionok
- C
- Python
- Node.js
- Java
Azure IoT Edge az alábbi eszközarchitektúrákkal működik:
- AMD64
- ARM32v7
- ARM64
A támogatott operációs rendszerekről, nyelvekről és architektúrákról további információt a Nyelv és az architektúra támogatása című témakörben talál.
A Visual Studio Code IoT Edge bővítmény használatakor a modulkódot a IoT Edge szimulátorban is elindíthatja és hibakereséssel végezheti el.
Windows fejlesztőszámítógépet és hibakeresési modulokat is használhat linuxos tárolókban a IoT Edge linuxos Windows (EFLOW) használatával. További információért az EFLOW modulok fejlesztéséhez való használatáról nézze meg a következőt: Oktatóanyag: IoT Edge-modulok fejlesztése Linux-tárolókkal az IoT Edge for Linux a Windows rendszerhez használatával.
Ha még nem ismerkedik a Visual Studio Code hibakeresési képességeivel, tekintse meg a Visual Studio Code hibakeresést.
Előfeltételek
Fejlesztőgépként használhat Windows, macOS vagy Linux rendszerű számítógépet vagy virtuális gépet. Windows számítógépeken Windows vagy Linux-modulokat fejleszthet. Linux-modulok fejlesztéséhez használjon egy Windows számítógépet, amely megfelel a Docker Desktop requirements.
A fejlesztéshez és hibakereséshez szükséges eszközök telepítéséhez végezze el a Develop Azure IoT Edge modulokat Visual Studio Code oktatóanyag használatával.
Telepítse Visual Studio Code.
Adja hozzá a következő bővítményeket:
- Azure IoT Edge bővítmény. A Visual Studio Code Azure IoT Edge eszközei bővítmény karbantartási módban van.
- Azure IoT Hub bővítmény.
Ha egy eszközön szeretné hibakeresésre használni a modult, a következőkre lesz szüksége:
- Aktív IoT Hub legalább egy IoT Edge eszközzel.
- Fizikai IoT Edge eszköz vagy virtuális eszköz. Hozzon létre egy virtuális eszközt az Azure-ban a Linux quickstart lépéseit követve.
- Egyéni IoT Edge modul. Egyéni modul létrehozásához kövesse a Develop Azure IoT Edge modulok Visual Studio Code oktatóanyag lépéseit.
Hibakeresés tároló nélkül a IoT Edge szimulátor használatával
A IoT Edge szimulátor egy olyan eszköz, amely a fejlesztői számítógépen fut, és egyetlen IoT Edge eszköz viselkedését szimulálja. A IoT Edge-szimulátorral fizikai eszköz vagy teljes IoT Edge eszköz futtatókörnyezet nélkül fejlesztheti és tesztelheti IoT Edge moduljait.
Az alábbi hibakeresési lépések feltételezik, hogy már létrehozott egy egyéni modult. Ha még nem hozott létre egyéni modult, kövesse a Develop Azure IoT Edge modulok lépéseit Visual Studio Code oktatóanyag használatával.
A modul tároló nélküli hibakeresése nem érhető el C vagy Python használatakor.
Hibakeresés csatolási módban IoT Edge szimulátor használatával
A csatolási módban végzett hibakeresés nem érhető el C vagy Python esetén.
Modul hibakeresése a IoT Edge futtatókörnyezettel
Minden modulmappa több Docker-fájlt tartalmaz a különböző tárolótípusokhoz. A .debug kiterjesztéssel végződő fájlokat használhatja a modul teszteléshez való létrehozásához.
Ha ezzel a módszerrel hibakeresést hajt végre, a modulok a IoT Edge futtatókörnyezeten futnak. Az IoT Edge eszköz és a Visual Studio Code ugyanazon a gépen futtathatók, de általában Visual Studio Code fut a fejlesztő gépen, míg a IoT Edge futtatókörnyezet és a modulok egy másik fizikai gépen futnak. Hibakeresés a Visual Studio Code-ból:
- Állítsa be a IoT Edge-eszközt, hozza létre a IoT Edge-modulokat a .debug Dockerfile használatával, majd telepítse a IoT Edge eszközre.
- Frissítse úgy a
launch.jsonfájlt, hogy a Visual Studio Code csatlakozni tudjon a távoli gépen lévő tárolóban futó folyamathoz. Ezt a fájlt a.vscodemunkaterület mappájában találja, és minden alkalommal frissül, amikor új modult ad hozzá, amely támogatja a hibakeresést. - A távoli SSH hibakeresést használva csatlakozzon a tárolóhoz a távoli gépen.
A modul létrehozása és üzembe helyezése egy IoT Edge-eszközön
A Visual Studio Code nyissa meg a deployment.debug.template.json üzembehelyezési jegyzékfájlt. A deployment jegyzék a célzott IoT Edge eszközön konfigurálni kívánt modulokat ismerteti. Az üzembe helyezés előtt frissítse Azure Container Registry hitelesítő adatait és modulképeit a megfelelő createOptions értékekkel. A createOption-értékekkel kapcsolatos további információkért lásd: Az IoT Edge modulok tároló-létrehozási beállításainak konfigurálása.
Ha Azure Container Registry használ a modul lemezképének tárolásához, adja hozzá a hitelesítő adatait a edgeAgent>settings>regisztrációs hitelesítő adatok szakaszhoz deployment.debug.template.json. Cserélje le a myacr-t a saját regisztrációs adatbázis nevére mindkét helyen, és adja meg a jelszavát és a bejelentkezési kiszolgáló címét. Példa:
"modulesContent": { "$edgeAgent": { "properties.desired": { "schemaVersion": "1.1", "runtime": { "type": "docker", "settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "myacr": { "username": "myacr", "password": "<your_azure_container_registry_password>", "address": "myacr.azurecr.io" } } } }, ...Adja hozzá vagy cserélje le a következő karakterláncként feldolgozott tartalmat a createOptions értékhez minden felsorolt rendszerhez (edgeHub és edgeAgent) és egyéni modulhoz (például a filtermodule esetében). Szükség esetén módosítsa az értékeket.
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"A szűrőmodul konfigurációjának például a következőhöz hasonlónak kell lennie:
"filtermodule": { "version": "1.0", "type": "docker", "status": "running", "restartPolicy": "always", "settings": { "image": "myacr.azurecr.io/filtermodule:0.0.1-amd64", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}" }
- A Visual Studio Code parancskatalógusban futtassa a következő parancsot: Azure IoT Edge: Build and Push IoT Edge solution.
- Válassza ki a
deployment.debug.template.jsonmegoldáshoz tartozó fájlt. - A Visual Studio Code Explorer nézet Azure IoT Hub>Devices szakaszában kattintson a jobb gombbal a IoT Edge eszköz nevére az üzembe helyezéshez, majd válassza az A központi telepítés létrehozása önálló eszközhöz.
Tipp
Ha meg szeretné erősíteni, hogy az Ön által kiválasztott eszköz IoT Edge-eszköz, kattintson rá az elérhető modulok listájának kibontásához, és ellenőrizze, hogy jelen vannak-e a $edgeHub és a $edgeAgent. Minden IoT Edge eszköz tartalmazza ezt a két modult.
- Lépjen a megoldás config (konfigurációs) mappájába, válassza ki a
deployment.debug.amd64.jsonfájlt, majd válassza a Select Edge Deployment Manifest lehetőséget.
Ellenőrizze a tároló állapotát az eszközről vagy a virtuális gépről a docker ps parancs terminálban való futtatásával. A parancs futtatása után a tárolónak szerepelnie kell a listában. Ha Visual Studio Code és a IoT Edge futtatókörnyezet ugyanazon a gépen fut, ellenőrizze az állapotot a Visual Studio Code Docker nézetben.
Fontos
Ha privát beállításjegyzéket használ, például Azure Container Registry a képekhez, előfordulhat, hogy hitelesítenie kell a képek leküldéséhez. A hitelesítéshez használja docker login <Azure Container Registry login server> vagy az acr login --name <Azure Container Registry name>.
Bejelentkezés a Dockerbe
Adja meg a tárolóregisztrációs adatbázis hitelesítő adatait a Dockernek, hogy az le tudja küldeni a tárolólemezképet a tárolóregisztrációs adatbázisban lévő tárolóba.
Jelentkezzen be a Dockerbe a beállításjegyzék létrehozása után mentett Azure Container Registry hitelesítő adatokkal.
docker login -u <Azure Container Registry username> -p <Azure Container Registry password> <Azure Container Registry login server>Előfordulhat, hogy biztonsági figyelmeztetést kap, amely a használatát
--password-stdinjavasolja. Habár ez ajánlott legjobb gyakorlatként szolgál a termelési környezetekhez, az oktatóanyag hatókörén kívül esik. További információkért tekintse meg a Docker bejelentkezési referenciát.Jelentkezzen be az Azure Container Registry-be. Előfordulhat, hogy telepítenie kell az Azure CLI-t a
azparancs használatához. Ez a parancs a konténer-regisztrációs adatbázisban található felhasználónevet és jelszót kéri, amelyet a Beállítások>Access keys részben talál.az acr login -n <Azure Container Registry name>
Tipp
Ha az oktatóanyag bármely pontján kijelentkezik, ismételje meg a Docker és az Azure Container Registry bejelentkezési lépéseit a folytatáshoz.
Docker-kép építési modul
A modul Docker-fájljával hozza létre a Docker-rendszerképet.
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
Például, használja a következő parancsokat a képfájl létrehozásához a helyi nyilvántartó vagy az Azure Container Registry számára:
# Build the image for the local registry
docker build --rm -f "./modules/filtermodule/Dockerfile.amd64.debug" -t localhost:5000/filtermodule:0.0.1-amd64 "./modules/filtermodule"
# Or build the image for an Azure Container Registry
docker build --rm -f "./modules/filtermodule/Dockerfile.amd64.debug" -t myacr.azurecr.io/filtermodule:0.0.1-amd64 "./modules/filtermodule"
Push modul Docker-képje
Küldje el a modul rendszerképét a helyi beállításjegyzékbe vagy egy tárolóregisztrációs adatbázisba.
docker push <ImageName>
Példa:
# Push the Docker image to the local registry
docker push localhost:5000/filtermodule:0.0.1-amd64
# Or push the Docker image to an Azure Container Registry
az acr login --name myacr
docker push myacr.azurecr.io/filtermodule:0.0.1-amd64
A modul üzembe helyezése az IoT Edge-eszközön
A IoT Edge Azure CLI set-modules paranccsal telepítse a modulokat az Azure IoT Hubra. Ha például a deployment.debug.template.json fájlban definiált modulokat az IoT Hub my-iot-hub alá szeretné telepíteni az IoT Edge eszközre my-device, használja a következő parancsot:
az iot edge set-modules --hub-name my-iot-hub --device-id my-device --content ./deployment.debug.template.json --login "HostName=my-iot-hub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=<SharedAccessKey>"
Tipp
Az IoT Hub megosztott hozzáférési kulcsát az Azure portálon találhatja meg az IoT Hub >Biztonsági beállítások>megosztott hozzáférési szabályzatok>iothubowner.
A modul hibakeresése
A modulok távoli eszközön való hibakereséséhez használja a távoli SSH-hibakeresést Visual Studio Code.
Engedélyezze Visual Studio Code távoli hibakeresést a Remote Development bővítmény telepítésével. A Visual Studio Code távoli hibakeresésről további információt a Visual Studio Code Távoli fejlesztés című témakörben talál.
A távoli SSH-hibakeresés Visual Studio Code való használatáról további információt a Fejlesztés SSH használatával című témakörben talál.
A Visual Studio Code Hibakeresés nézetben válassza ki a modul hibakeresési konfigurációs fájlját. Alapértelmezés szerint a .debug Dockerfile, a modul tárolóbeállításai createOptions és a fájl a launch.json localhostot használja.
Válassza a Hibakeresés indítása vagy az F5 lehetőséget, majd válassza ki a csatolni kívánt folyamatot. A Visual Studio Code Hibakeresés nézetben változók láthatók a bal oldali panelen.
Hibakeresés a Docker távoli SSH-val
A Docker és a Moby motorjai támogatják a tárolókhoz való SSH-kapcsolatokat, így hibakeresést végezhet Visual Studio Code távoli eszközhöz csatlakoztatva. A funkció használatához meg kell felelnie az alábbi előfeltételeknek.
A távoli SSH-hibakeresés előfeltételei a használt nyelvtől függően eltérhetnek. A következő szakaszok a .NET beállítását ismertetik. A többi nyelvről további információt az SSH-t használó távoli fejlesztés című témakörben talál. A távoli hibakeresés konfigurálásával kapcsolatos részleteket a Visual Studio Code dokumentáció minden nyelvére vonatkozó hibakeresési szakaszok tartalmazzák.
Docker SSH-bújtatás konfigurálása
A Docker SSH-bújtatás lépéseit követve állítsa be az SSH-bújtatást a fejlesztői számítógépen. Az SSH-bújtatáshoz nyilvános/titkos kulcspáros hitelesítésre és a távoli eszközvégpontot meghatározó Docker-környezetre van szükség.
A Dockerhez való csatlakozáshoz gyökérjogjogok szükségesek. A Docker nem gyökérfelhasználóként való kezelésének lépéseit követve engedélyezheti a kapcsolatot a Docker démonával a távoli eszközön. Ha befejezte a hibakeresést, előfordulhat, hogy el szeretné távolítani a felhasználót a Docker-csoportból.
A Visual Studio Code parancssorával (Ctrl+Shift+P) adja ki a Docker Context: Use parancsot a távoli gépre mutató Docker-környezet aktiválásához. Ez a parancs lehetővé teszi, hogy Visual Studio Code és a Docker CLI is használja a távoli gép környezetét.
Tipp
Minden Docker-parancs az aktuális környezetet használja. Ha végzett a hibakereséssel, ne felejtse el a környezet alapértelmezettre történő módosítását.
A távoli Docker-környezet aktív állapotának ellenőrzéséhez sorolja fel a távoli eszközön futó tárolókat:
docker psA kimenet a távoli eszközön futó tárolókat sorolja fel az alábbiakhoz hasonlóan:
PS C:\> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a317b8058786 myacr.azurecr.io/filtermodule:0.0.1-amd64 "dotnet filtermodule…" 24 hours ago Up 6 minutes filtermodule d4d949f8dfb9 mcr.microsoft.com/azureiotedge-hub:1.5 "/bin/sh -c 'echo \"$…" 24 hours ago Up 6 minutes 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:5671->5671/tcp, :::5671->5671/tcp, 0.0.0.0:8883->8883/tcp, :::8883->8883/tcp, 1883/tcp edgeHub 1f0da9cfe8e8 mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0 "/bin/sh -c 'echo \"$…" 24 hours ago Up 6 minutes tempSensor 66078969d843 mcr.microsoft.com/azureiotedge-agent:1.5 "/bin/sh -c 'exec /a…" 24 hours ago Up 6 minutes edgeAgentA .vscode könyvtárban nyissa meg launch.json Visual Studio Code, és adjon hozzá egy új konfigurációt. Válassza a Konfiguráció hozzáadása lehetőséget, majd válassza ki a modulhoz megfelelő távoli csatolási sablont. Az alábbi konfiguráció például a .NET Core-hoz készült. Módosítsa a PipeArgs -H paraméterének értékét az eszköz DNS-nevére vagy IP-címére.
"configurations": [ { "name": "Remote Debug IoT Edge Module (.NET Core)", "type": "coreclr", "request": "attach", "processId": "${command:pickRemoteProcess}", "pipeTransport": { "pipeProgram": "docker", "pipeArgs": [ "-H", "ssh://user@my-device-vm.eastus.cloudapp.azure.com:22", "exec", "-i", "filtermodule", "sh", "-c" ], "debuggerPath": "~/vsdbg/vsdbg", "pipeCwd": "${workspaceFolder}", "quoteArgs": true }, "sourceFileMap": { "/app": "${workspaceFolder}/modules/filtermodule" }, "justMyCode": true },
A modul távoli hibakeresése
Visual Studio Code Hibakeresési nézetében válassza a hibakeresési konfigurációt: Távoli hibakeresés IoT Edge modul (.NET Core).
Válassza a Hibakeresés indítása vagy válassza az F5 lehetőséget. Válassza ki a csatolandó folyamatot.
A Visual Studio Code Hibakeresés nézetben a bal oldali panelen láthatók a változók.
A Visual Studio Code-ban állítsa be a töréspontokat az egyéni modulban.
Töréspont elérésekor megvizsgálhatja a változókat, végiglépkedhet a kódon, és hibakeresést végezhet a modulban.
Megjegyzés
Az előző példa bemutatja, hogyan hibakeresést végezhet IoT Edge modulokon távoli tárolókon. A példa egy távoli Docker-környezetet ad hozzá, és módosítja a Docker-jogosultságokat a távoli eszközön. Miután befejezte a modulok hibakeresését, állítsa be a Docker-környezetet alapértelmezettre, és távolítsa el a jogosultságokat a felhasználói fiókjából.
Az IoT Developer blog bejegyzésében egy Raspberry Pi-eszközt használó példát talál.
Következő lépések
A modul létrehozása után megtanulhatja, hogyan telepítheti az Azure IoT Edge modulokat.
A IoT Edge-eszközök moduljainak fejlesztéséhez ismerje meg és használja Azure IoT Hub SDK-k.