Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
IoT Edge 1.1
Von Bedeutung
Das Ende des Supports für IoT Edge 1.1 war der 13. Dezember 2022. Überprüfen Sie den Microsoft Product Lifecycle , um Informationen darüber zu erhalten, wie dieses Produkt, dieser Dienst, die Technologie oder die API unterstützt wird. Weitere Informationen zum Aktualisieren auf die neueste Version von IoT Edge finden Sie unter Update IoT Edge.
In diesem Artikel konfigurieren wir einen virtuellen Azure-Computer, auf dem Linux ausgeführt wird, um ein Azure IoT Edge-Gerät zu sein, das als transparentes Gateway fungiert. Mit einer transparenten Gatewaykonfiguration können Geräte über das Gateway eine Verbindung mit Azure IoT Hub herstellen, ohne zu wissen, dass das Gateway vorhanden ist. Gleichzeitig ist ein Benutzer, der mit den Geräten in IoT Hub interagiert, sich des Zwischengatewaygeräts nicht bewusst. Letztendlich fügen wir edge analytics zu unserem System hinzu, indem wir dem transparenten Gateway IoT Edge-Module hinzufügen.
Hinweis
Die Konzepte in diesem Lernprogramm gelten für alle Versionen von IoT Edge, aber das Beispielgerät, das Sie zum Testen des Szenarios erstellen, führt IoT Edge Version 1.1 aus.
Die Schritte in diesem Artikel werden in der Regel von einem Cloudentwickler ausgeführt.
In diesem Abschnitt des Lernprogramms erfahren Sie, wie Sie:
- Erstellen Sie Zertifikate, damit Ihr Gatewaygerät sicher mit Ihren downstream-Geräten verbunden werden kann.
- Erstellen Sie ein IoT Edge-Gerät.
- Erstellen Sie einen virtuellen Azure-Computer, um Ihr IoT Edge-Gerät zu simulieren.
Voraussetzungen
Dieser Artikel ist Teil einer Reihe für ein Lernprogramm zur Verwendung von Azure Machine Learning auf IoT Edge. Jeder Artikel in der Reihe baut auf der Arbeit im vorherigen Artikel auf. Wenn Sie direkt zu diesem Artikel gelangt sind, lesen Sie den ersten Artikel in der Reihe.
Erstellen von Zertifikaten
Damit ein Gerät als Gateway funktioniert, muss es sicher eine Verbindung mit nachgeschalteten Geräten herstellen. Mit IoT Edge können Sie eine Public Key-Infrastruktur (PKI) verwenden, um sichere Verbindungen zwischen Geräten einzurichten. In diesem Fall erlauben wir ein nachgeschaltetes IoT-Gerät, eine Verbindung mit einem IoT Edge-Gerät herzustellen, das als transparentes Gateway fungiert. Um eine angemessene Sicherheit zu gewährleisten, sollte das downstream-Gerät die Identität des IoT Edge-Geräts bestätigen. Weitere Informationen dazu, wie IoT Edge-Geräte Zertifikate verwenden, finden Sie unter Azure IoT Edge-Zertifikatverwendungsdetails.
In diesem Abschnitt erstellen wir die selbstsignierten Zertifikate mithilfe eines Docker-Images, das wir dann erstellen und ausführen. Wir haben uns entschieden, ein Docker-Image zu verwenden, um diesen Schritt abzuschließen, da die Anzahl der Schritte reduziert wird, die zum Erstellen der Zertifikate auf dem Windows-Entwicklungscomputer erforderlich sind. Informationen dazu, was wir mit dem Docker-Image automatisiert haben, finden Sie unter Erstellen von Demozertifikaten zum Testen von IoT Edge-Gerätefeatures.
Melden Sie sich bei Ihrer Entwicklungs-VM an.
Erstellen Sie einen neuen Ordner mit dem Pfad und dem Namen "c:\edgeCertificates".
Wenn sie noch nicht ausgeführt wird, starten Sie Docker für Windows über das Windows-Startmenü.
Öffnen Sie Visual Studio Code.
Wählen Sie Datei>Ordner öffnen und dann C:\source\IoTEdgeAndMlSample\CreateCertificates aus.
Klicken Sie im Explorer-Bereich mit der rechten Maustaste auf Dockerfile , und wählen Sie "Image erstellen" aus.
Übernehmen Sie im Dialogfeld den Standardwert für den Bildnamen und das Tag: createcertificates: latest.
Warten Sie, bis der Buildvorgang abgeschlossen wird.
Hinweis
Möglicherweise wird eine Warnung über einen fehlenden öffentlichen Schlüssel angezeigt. Es ist sicher, diese Warnung zu ignorieren. Ebenso wird eine Sicherheitswarnung angezeigt, die Ihnen empfiehlt, Berechtigungen für Ihr Bild zu überprüfen oder zurückzusetzen, was für dieses Bild sicher zu ignorieren ist.
Führen Sie im Terminalfenster von Visual Studio Code den Container createcertificates aus.
docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificatesDocker fordert den Zugriff auf das Laufwerk "c:\" auf. Wählen Sie "Freigeben" aus.
Geben Sie Ihre Anmeldeinformationen an, wenn Sie dazu aufgefordert werden.
Überprüfen Sie nach dem Schließen des Containers in c:\edgeCertificates auf die folgenden Dateien:
- c:\edgeCertificates\certs\azure-iot-test-only.root.ca.cert.pem
- c:\edgeCertificates\certs\new-edge-device-full-chain.cert.pem
- c:\edgeCertificates\certs\new-edge-device.cert.pem
- c:\edgeCertificates\certs\new-edge-device.cert.pfx
- c:\edgeCertificates\private\new-edge-device.key.pem
Hochladen von Zertifikaten in Azure Key Vault
Um unsere Zertifikate sicher zu speichern und von mehreren Geräten aus zugänglich zu machen, laden wir die Zertifikate in Azure Key Vault hoch. Wie Sie aus der vorherigen Liste sehen können, haben wir zwei Arten von Zertifikatdateien: PFX und PEM. Wir behandeln die PFX-Datei als Key Vault-Zertifikate, die in Key Vault hochgeladen werden. Die PEM-Dateien sind Klartext, und wir behandeln sie als Geheimnisse im Schlüsseltresor. Wir verwenden die Key Vault-Instanz, die dem Azure Machine Learning-Arbeitsbereich zugeordnet ist, den wir mithilfe der Jupyter-Notizbücher erstellt haben.
Wechseln Sie im Azure-Portal zu Ihrem Azure Machine Learning-Arbeitsbereich.
Suchen Sie auf der Übersichtsseite des Machine Learning-Arbeitsbereichs den Namen für Key Vault.
Laden Sie auf Ihrem Entwicklungscomputer die Zertifikate in Key Vault hoch. Ersetzen Sie <"subscriptionId> " und <"keyvaultname> " durch Ihre Ressourceninformationen.
c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>Wenn Sie dazu aufgefordert werden, melden Sie sich bei Azure an.
Das Skript wird einige Minuten lang mit der Ausgabe ausgeführt, die die neuen Key Vault-Einträge auflistet.
Registrieren eines IoT Edge-Geräts
Um ein Azure IoT Edge-Gerät mit einem IoT-Hub zu verbinden, registrieren wir zuerst ein Gerät im Hub. Wir verwenden die Verbindungszeichenfolge aus der Geräteidentität in der Cloud und verwenden sie, um die Laufzeit auf unserem IoT Edge-Gerät zu konfigurieren. Nachdem ein konfiguriertes Gerät eine Verbindung mit dem Hub hergestellt hat, können wir Module bereitstellen und Nachrichten senden. Wir können auch die Konfiguration des physischen IoT Edge-Geräts ändern, indem wir die entsprechende Geräteidentität im IoT Hub ändern.
In diesem Lernprogramm registrieren wir die neue Geräteidentität mithilfe von Visual Studio Code. Sie können diese Schritte auch über das Azure-Portal oder die Azure CLI ausführen. Je nachdem, welche Methode Sie auswählen, stellen Sie sicher, dass Sie die Geräteverbindungszeichenfolge Ihres IoT Edge-Geräts abrufen. Die Geräteverbindungszeichenfolge finden Sie auf der Detailseite Ihres Geräts im Azure-Portal.
Öffnen Sie auf Ihrem Entwicklungscomputer Visual Studio Code.
Erweitern Sie den Azure IoT Hub-Frame aus der Visual Studio Code Explorer-Ansicht .
Wählen Sie die Auslassungspunkte und dann "IoT Edge-Gerät erstellen" aus.
Geben Sie dem Gerät einen Namen. Aus Gründen der Einfachheit verwenden wir den Namen aaTurbofanEdgeDevice , sodass er nach oben auf aufgelisteten Geräten sortiert wird.
Das neue Gerät wird in der Liste der Geräte angezeigt.
Bereitstellen eines virtuellen Azure-Computers
Wir verwenden einen virtuellen Ubuntu 18.04 LTS-Computer mit installierter und konfigurierter Azure IoT Edge-Runtime. Die Bereitstellung verwendet eine Azure Resource Manager-Vorlage , die im Projekt-Repository "iotedge-vm-deploy " verwaltet wird. Es stellt das IoT Edge-Gerät bereit, das Sie im vorherigen Schritt registriert haben, mithilfe der Verbindungszeichenfolge, die Sie in der Vorlage angeben.
Sie können den virtuellen Computer über das Azure-Portal oder die Azure CLI bereitstellen. Wir zeigen die Azure-Portalschritte an. Weitere Informationen finden Sie unter Ausführen von Azure IoT Edge auf virtuellen Ubuntu-Computern .
Bereitstellen mithilfe der Schaltfläche „In Azure bereitstellen“
Um die
iotedge-vm-deployARM-Vorlage zum Bereitstellen Ihres virtuellen Ubuntu 18.04 LTS-Computers zu verwenden, klicken Sie auf die Schaltfläche unten:Füllen Sie im neu gestarteten Fenster die verfügbaren Formularfelder aus.
Feld BESCHREIBUNG Abonnement Das aktive Azure-Abonnement, in dem der virtuelle Computer bereitgestellt werden soll. Ressourcengruppe Eine vorhandene oder neu erstellte Ressourcengruppe, die den virtuellen Computer und die ihm zugeordneten Ressourcen enthalten soll. DNS-Bezeichnungspräfix Ein erforderlicher Wert Ihrer Wahl, der dem Hostnamen des virtuellen Computers vorangestellt werden soll. Administratorbenutzername Ein Benutzername, der bei der Bereitstellung Root-Rechte erhält. Geräteverbindungszeichenfolge Eine Geräteverbindungszeichenfolge für ein Gerät, das in Ihrem vorgesehenen IoT Hub erstellt wurde. VM-Größe Die Größe des virtuellen Computers, der bereitgestellt werden soll Ubuntu-Betriebssystemversion Die Version des Ubuntu-Betriebssystems, die auf dem virtuellen Basiscomputer installiert werden soll. Ort Die geografische Region, in der der virtuelle Computer bereitgestellt werden soll, wird standardmäßig auf den Speicherort der ausgewählten Ressourcengruppe festgelegt. Authentifizierungstyp Wählen Sie sshPublicKey oder das Kennwort je nach Ihren Wünschen aus. Administratorkennwort oder -schlüssel Der Wert des öffentlichen SSH-Schlüssels oder der Wert des Kennworts, je nach der Auswahl des Authentifizierungstyps. Wenn alle Felder ausgefüllt wurden, aktivieren Sie das Kontrollkästchen am unteren Rand der Seite, um die Bedingungen zu akzeptieren, und wählen Sie „Überprüfen + erstellen“ und „Erstellen“ aus, um mit der Bereitstellung zu beginnen.
Navigieren Sie im Azure-Portal zu Ihrem virtuellen Computer. Sie finden sie über Ihre Ressourcengruppe oder indem Sie virtuelle Computer unter Azure-Dienste auf der Portal-Startseite auswählen.
Notieren Sie sich den DNS-Namen Ihres virtuellen Computers. Sie benötigen sie, um sich bei Ihrem virtuellen Computer anzumelden.
Herstellen einer Verbindung mit Ihrem IoT Edge-Gerät
Öffnen Sie eine Eingabeaufforderung, und verwenden Sie den folgenden Befehl, um sich bei Ihrem virtuellen Computer anzumelden. Geben Sie Ihre eigenen Informationen für Benutzernamen und DNS-Namen basierend auf dem vorherigen Abschnitt ein.
ssh <adminUsername>@<DNS_name>Wenn Sie aufgefordert werden, die Authentizität des Hosts zu überprüfen, geben Sie "Ja " ein, und wählen Sie "EINGABETASTE" aus.
Wenn Sie dazu aufgefordert werden, geben Sie Ihr Kennwort an.
Ubuntu zeigt eine Willkommensnachricht an, und dann sollte eine Eingabeaufforderung wie
<username>@<machinename>:~$angezeigt werden.
Herunterladen von Key Vault-Zertifikaten
Weiter oben in diesem Artikel haben wir Zertifikate in Key Vault hochgeladen, um sie für unser IoT Edge-Gerät und unser downstreames Gerät verfügbar zu machen. Das nachgeschaltete Gerät verwendet das IoT Edge-Gerät als Gateway für die Kommunikation mit IoT Hub.
Wir befassen uns später im Lernprogramm mit dem nachgeschalteten Gerät. Laden Sie in diesem Abschnitt die Zertifikate auf das IoT Edge-Gerät herunter.
Melden Sie sich über die SSH-Sitzung auf dem virtuellen Linux-Computer mit der Azure CLI bei Azure an.
az loginSie werden aufgefordert, einen Browser auf einer Microsoft-Geräteanmeldungsseite zu öffnen und einen eindeutigen Code bereitzustellen. Sie können diese Schritte auf Ihrem lokalen Computer ausführen. Schließen Sie das Browserfenster, wenn Sie die Authentifizierung abgeschlossen haben.
Wenn Sie sich erfolgreich authentifizieren, anmeldet sich der virtuelle Linux-Computer und listet Ihre Azure-Abonnements auf.
Legen Sie das Azure-Abonnement fest, das Sie für Azure CLI-Befehle verwenden möchten.
az account set --subscription <subscriptionId>Erstellen Sie ein Verzeichnis auf dem virtuellen Computer für die Zertifikate.
sudo mkdir /edgeMlCertificatesLaden Sie die Zertifikate herunter, die Sie im Schlüsseltresor gespeichert haben: new-edge-device-full-chain.cert.pem, new-edge-device.key.pem und azure-iot-test-only.root.ca.cert.pem.
key_vault_name="<key vault name>" sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-full-chain-cert-pem -f /edgeMlCertificates/new-edge-device-full-chain.cert.pem sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-key-pem -f /edgeMlCertificates/new-edge-device.key.pem sudo az keyvault secret download --vault-name $key_vault_name --name azure-iot-test-only-root-ca-cert-pem -f /edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem
Aktualisieren der IoT Edge-Gerätekonfiguration
Die IoT Edge-Laufzeit verwendet die Datei "/etc/iotedge/config.yaml", um die Konfiguration beizubehalten. Wir müssen zwei Informationen in dieser Datei aktualisieren:
- Zertifikate: Die Zertifikate, die für Verbindungen mit nachgeschalteten Geräten verwendet werden sollen
- Hostname: Der vollqualifizierte Domänenname (FQDN) des VM IoT Edge-Geräts
Aktualisieren Sie die Zertifikate und den Hostnamen, indem Sie die Datei config.yaml direkt bearbeiten.
Öffnen Sie die Datei config.yaml.
sudo nano /etc/iotedge/config.yamlAktualisieren Sie den Abschnitt "Zertifikate" der Datei "config.yaml", indem Sie den führenden # entfernen und den Pfad festlegen, sodass die Datei wie im folgenden Beispiel aussieht:
certificates: device_ca_cert: "/edgeMlCertificates/new-edge-device-full-chain.cert.pem" device_ca_pk: "/edgeMlCertificates/new-edge-device.key.pem" trusted_ca_certs: "/edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem"Stellen Sie sicher, dass die Zertifikate: Zeile keinen vorherigen Leerraum aufweist und dass jedes der geschachtelten Zertifikate durch zwei Leerzeichen eingezogen wird.
Ein Rechtsklick in Nano fügt den Inhalt der Zwischenablage an der aktuellen Cursorposition ein. Um die Zeichenfolge zu ersetzen, wechseln Sie mit den Pfeiltasten zu der Zeichenfolge, die Sie ersetzen möchten, löschen Sie diese, und klicken Sie dann mit der rechten Maustaste, um den Inhalt aus der Zwischenablage einzufügen.
Wechseln Sie im Azure-Portal zu Ihrem virtuellen Computer. Kopieren Sie den DNS-Namen (FQDN des Computers) aus dem Abschnitt "Übersicht" .
Fügen Sie den FQDN in den Hostnamenabschnitt der datei config.yml ein. Stellen Sie sicher, dass der Name in Kleinbuchstaben geschrieben ist.
hostname: '<machinename>.<region>.cloudapp.azure.com'Speichern und schließen Sie die Datei, indem Sie STRG+X, Y und EINGABETASTE auswählen.
Starten Sie den IoT Edge-Daemon neu.
sudo systemctl restart iotedgeÜberprüfen Sie den Status des IoT Edge-Daemons. Geben Sie nach dem Befehl :q ein, um zu beenden.
systemctl status iotedge
Problembehandlung
Falls im Statusbereich Fehler angezeigt werden (farbiger Text mit dem Präfix „ERROR“), untersuchen Sie die Daemonprotokolle, um ausführliche Fehlerinformationen zu erhalten.
journalctl -u iotedge --no-pager --no-full
Weitere Informationen zum Beheben von Fehlern finden Sie auf der Seite zur Problembehandlung .
Bereinigen von Ressourcen
Dieses Tutorial ist Teil einer Reihe, bei der jeder Artikel auf der Arbeit der vorherigen aufbaut. Warten Sie mit dem Aufräumen aller Ressourcen, bis Sie das letzte Lernprogramm abgeschlossen haben.
Nächste Schritte
Wir haben gerade die Konfiguration einer Azure-VM als transparentes IoT Edge-Gateway abgeschlossen. Wir haben damit begonnen, Testzertifikate zu generieren, die wir in Key Vault hochgeladen haben. Als Nächstes haben wir eine Skript- und Ressourcen-Manager-Vorlage verwendet, um den virtuellen Computer mit dem Ubuntu Server 16.04 LTS + Azure IoT Edge-Laufzeitimage aus Azure Marketplace bereitzustellen. Nachdem der virtuelle Computer gestartet wurde, stellten wir eine Verbindung über SSH her. Anschließend haben wir uns bei Azure angemeldet und Zertifikate aus Key Vault heruntergeladen. Wir haben mehrere Aktualisierungen an der Konfiguration der IoT Edge-Laufzeit vorgenommen, indem wir die Datei config.yaml aktualisieren.
Fahren Sie mit dem nächsten Artikel fort, um IoT Edge-Module zu erstellen.