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őkre vonatkozik:
IoT Edge 1.5
Fontos
Az IoT Edge 1.5 LTS a támogatott kiadás. Az IoT Edge 1.4 LTS 2024. november 12-én megszűnik. Ha egy korábbi kiadáson dolgozik, olvassa el az IoT Edge frissítése című témakört.
Ez a cikk bemutatja, hogyan használható a Visual Studio Code az IoT Edge-modulok hibakeresésére több nyelven. A fejlesztői számítógépen a Visual Studio Code használatával csatolhatja és hibakereséssel végezheti el a modult egy 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.
A Visual Studio Code az alábbi programozási nyelveken támogatja az IoT Edge-modulok írását:
- C# és C# Azure Functions
- C
- Python
- Node.js
- Java
Az 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 az IoT Edge-szimulátorban is elindíthatja és hibakereséssel végezheti el.
Windows rendszerű fejlesztőszámítógépet és hibakeresési modulokat is használhat Linux-tárolókban a Windowson futó IoT Edge (EFLOW) használatával. További információ az EFLOW modulfejlesztéshez való használatáról: Oktatóanyag: IoT Edge-modulok fejlesztése Linux-tárolókkal linuxos IoT Edge használatával Windows rendszeren.
Ha még nem ismerkedik a Visual Studio Code hibakeresési képességeivel, tekintse meg a Visual Studio Code hibakeresését.
Előfeltételek
Fejlesztési gépként használhat windowsos, macOS vagy Linux rendszerű számítógépet vagy virtuális gépet. Windows rendszerű számítógépeken Windows- vagy Linux-modulokat is fejleszthet. Linux-modulok fejlesztéséhez olyan Windows rendszerű számítógépet használjon, amely megfelel a Docker Desktop követelményeinek.
A fejlesztéshez és hibakereséshez szükséges eszközök telepítéséhez végezze el az Azure IoT Edge-modulok fejlesztését a Visual Studio Code oktatóanyagával.
A Visual Studio Code telepítése.
Adja hozzá a következő bővítményeket:
- Azure IoT Edge-bővítmény . A Visual Studio Code-bővítményhez készült Azure IoT Edge-eszközök karbantartási módban használhatók.
- 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 rövid útmutatójának lépéseit követve.
- Egyéni IoT Edge-modul. Egyéni modul létrehozásához kövesse az Azure IoT Edge-modulok fejlesztésének lépéseit a Visual Studio Code oktatóanyagával.
Hibakeresés tároló nélkül az IoT Edge-szimulátor használatával
Az 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. Az IoT Edge-szimulátor használatával fizikai eszköz vagy teljes IoT Edge-eszköz futtatókörnyezet nélkül fejlesztheti és tesztelheti az IoT Edge-modulokat.
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 az Azure IoT Edge-modulok fejlesztése a Visual Studio Code-oktatóanyagban leírt lépéseket.
A modul tároló nélküli hibakeresése nem érhető el C vagy Python használatakor.
Hibakeresés csatolási módban az IoT Edge-szimulátor használatával
A csatolási módban történő hibakeresés nem érhető el C vagy Python esetén.
Modul hibakeresése az 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 az IoT Edge-futtatókörnyezeten futnak. Az IoT Edge-eszköz és a Visual Studio Code ugyanazon a gépen futtatható, de a Visual Studio Code általában a fejlesztő gépen fut, míg az IoT Edge-futtatókörnyezet és a modulok egy másik fizikai gépen futnak. Visual Studio Code használatával történő hibakeresés:
- Állítsa be az IoT Edge-eszközt, hozza létre az IoT Edge-modulokat a .debug Dockerfile használatával, majd telepítse az IoT Edge-eszközön.
- Frissítsen
launch.json, hogy a Visual Studio Code csatolhassa a folyamatot egy tárolóban a távoli gépen. 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. - Távoli SSH-hibakereséssel csatolhatja a tárolót a távoli gépen.
Modul létrehozása és üzembe helyezése IoT Edge-eszközön
A Visual Studio Code-ban nyissa meg a deployment.debug.template.json üzembehelyezési jegyzékfájlt. Az üzembe helyezési jegyzék ismerteti a célzott IoT Edge-eszközön konfigurálni kívánt modulokat. Az üzembe helyezés előtt frissítse az Azure Container Registry hitelesítő adatait és modulrendszerképeit a megfelelő createOptions értékekkel. A createOption-értékekkel kapcsolatos további információkért tekintse meg az IoT Edge-modulok tároló-létrehozási beállításainak konfigurálását ismertető témakört.
Ha egy Azure Container Registryt használ a modul lemezképének tárolásához, adja hozzá a hitelesítő adatait az edgeAgent>beállítások>beállításjegyzékének Hitelesítő adatok szakaszához 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ő sztringezett tartalmat a createOptions értékre a felsorolt rendszerek (edgeHub és edgeAgent) és egyéni modul (például 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ógusában futtassa az Azure IoT Edge: Build and Push IoT Edge-megoldást.
- Válassza ki a
deployment.debug.template.jsonmegoldáshoz tartozó fájlt. -
szakaszában kattintson a jobb gombbal az üzembe helyezéshez szükséges IoT Edge-eszköz nevére, majd válassza > lehetőséget.
Tipp.
Ha meg szeretné győződni arról, hogy a kiválasztott eszköz egy IoT Edge-eszköz, jelölje ki a modulok listájának kibontásához, és ellenőrizze a $edgeHub és a $edgeAgent jelenlétét. Minden IoT Edge-eszköz tartalmazza ezt a két modult.
- Lépjen a megoldás konfigurációs mappájába, válassza ki a fájlt, majd válassza
deployment.debug.amd64.jsonkiválasztása 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 a Visual Studio Code és az IoT Edge futtatókörnyezet ugyanazon a gépen fut, ellenőrizze az állapotot a Visual Studio Code Docker nézetben.
Fontos
Ha magánregisztrációs adatbázist használ, például az Azure Container Registryt a rendszerképekhez, előfordulhat, hogy hitelesítenie kell magát a rendszerképek leküldéséhez. Használja docker login <Azure Container Registry login server> vagy az acr login --name <Azure Container Registry name> hitelesítse.
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 Registrybe. Előfordulhat, hogy a parancs használatához telepítenie kell az Azure CLI-t
az. Ez a parancs a tárolóregisztrációs adatbázisban található felhasználónevet és jelszót kéri a Beállításokaz 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.
Build modul Docker-rendszerképe
A modul Docker-fájljával hozza létre a Docker-rendszerképet.
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
Ha például a rendszerképet a helyi beállításjegyzékhez vagy egy Azure Container Registryhez szeretné létrehozni, használja a következő parancsokat:
# 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"
Leküldéses modul Docker-rendszerképe
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
Az IoT Edge Azure CLI set-modules parancsával üzembe helyezheti a modulokat az Azure IoT Hubon. Ha például a deployment.debug.template.json fájlban definiált modulokat az IoT Hub my-iot-hubra szeretné telepíteni az IoT Edge-eszköz my-device eszközén, 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 Portalon találja az IoT Hub >biztonsági beállításai>>.
A modul hibakeresése
A modulok távoli eszközön való hibakereséséhez használja a Távoli SSH-hibakeresést a Visual Studio Code-ban.
Engedélyezze a Visual Studio Code távoli hibakeresését a Remote Development bővítmény telepítésével. További információ a Visual Studio Code távoli hibakereséséről: Visual Studio Code Remote Development.
A Távoli SSH-hibakeresés Visual Studio Code-ban való használatával kapcsolatos részletekért lásd: Távoli fejlesztés SSH használatával.
A Visual Studio Code Hibakeresési 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ési 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 a Visual Studio Code-ban hibakeresést végezhet egy 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észletek a Visual Studio Code dokumentációjában találhatók az egyes nyelvek hibakeresési szakaszaiban.
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-ban a Parancskatalógus (Ctrl+Shift+P) segítségével adja ki a Docker-környezetet: A parancs használatával aktiválhatja a távoli gépre mutató Docker-környezetet. Ezzel a paranccsal a Visual Studio Code és a Docker CLI is használhatja 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 a launch.json a Visual Studio Code-ban, é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
A Visual Studio Code Hibakeresési nézetben válassza ki a hibakeresési konfiguráció távoli hibakeresési IoT Edge-modulját (.NET Core)..
Válassza a Hibakeresés indítása vagy az F5 lehetőséget. Válassza ki a csatolandó folyamatot.
A Visual Studio Code Hibakeresés nézetében a bal oldali panelen láthatók a változók.
A Visual Studio Code-ban állítson be 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.
Feljegyzés
Az előző példa bemutatja, hogyan lehet hibakeresést végezni az 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 megtudhatja, hogyan helyezhet üzembe Azure IoT Edge-modulokat.
Az IoT Edge-eszközök moduljainak fejlesztéséhez ismerje meg és használja az Azure IoT Hub SDK-jait.