Bereitstellen des Moduls „Azure Blob Storage auf IoT Edge“ auf Ihrem Gerät

Gilt für:Häkchen für IoT Edge 1.5 IoT Edge 1.5 IoT Edge 1.4 Häkchen IoT Edge 1.4

Wichtig

IoT Edge 1.5 LTS und IoT Edge 1.4 LTS sind unterstützte Releases. Das Ende der Lebensdauer von IoT Edge 1.4 LTS wird am 12. November 2024 erreicht. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.

Es gibt mehrere Möglichkeiten, wie Sie Module auf einem IoT Edge-Gerät bereitstellen können. Alle sind für Azure Blob Storage auf IoT Edge-Module geeignet. Die beiden einfachsten Methoden stellen die Verwendung des Azure-Portals oder von Visual Studio Code-Vorlagen dar.

Voraussetzungen

Bereitstellen über das Azure-Portal

Im Azure-Portal werden Sie durch das Erstellen eines Bereitstellungsmanifests und die Übertragung der Bereitstellung auf ein IoT Edge-Gerät per Pushvorgang geführt.

Auswählen Ihres Geräts

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrem IoT Hub.
  2. Wählen Sie Geräte im Menü Geräteverwaltung aus.
  3. Wählen Sie in der Liste das IoT Edge-Zielgerät aus.
  4. Wählen Sie Module festlegen aus.

Konfigurieren eines Bereitstellungsmanifests

Ein Bereitstellungsmanifest ist ein JSON-Dokument, das beschreibt, welche Module bereitgestellt werden sollen, wie Daten zwischen den Modulen übermittelt werden und welche Eigenschaften die Modulzwillinge aufweisen sollen. Das Azure-Portal enthält einen Assistenten, der Sie durch die Erstellung eines Bereitstellungsmanifests führt. Es besteht aus drei Schritten, die in Registerkarten organisiert sind: Module, Routen und Überprüfen und Erstellen.

Hinzufügen von Modulen

  1. Wählen Sie im Abschnitt IoT Edge-Module das Dropdownmenü Hinzufügen und dort IoT Edge-Modul aus, um die Seite IoT Edge-Modul hinzufügen anzuzeigen.

  2. Geben Sie auf der Registerkarte Einstellungen einen Namen für das Modul ein und geben Sie dann den URI des Container-Images an:

    Beispiele:

    • Name des IoT Edge-Moduls: azureblobstorageoniotedge
    • Image-URI: mcr.microsoft.com/azure-blob-storage:latest

    Screenshot: Registerkarte „Moduleinstellungen“ auf der Seite „IoT Edge-Modul hinzufügen“

    Klicken Sie erst dann auf Hinzufügen, wenn Sie auf den Registerkarten Moduleinstellungen, Optionen für Containererstellung und Einstellungen für Modulzwilling Werte eingegeben haben, wie in dieser Vorgehensweise beschrieben.

    Wichtig

    Bei Modulaufrufen für Azure IoT Edge muss die Groß-/Kleinschreibung beachtet werden, und auch für das Storage SDK werden standardmäßig Kleinbuchstaben verwendet. Der Name des Moduls im Azure Marketplace lautet AzureBlobStorageonIoTEdge. Indem Sie den Namen aber ändern und Kleinbuchstaben verwenden, können Sie sicherstellen, dass Ihre Verbindungen mit dem Modul „Azure Blob Storage auf IoT Edge“ nicht unterbrochen werden.

  3. Öffnen Sie die Registerkarte Optionen für Containererstellung.

  4. Kopieren Sie den folgenden JSON-Code, und fügen Sie ihn in das Feld ein, um Informationen zum Speicherkonto und eine Einbindung für den Speicher auf Ihrem Gerät bereitzustellen.

    {
      "Env":[
        "LOCAL_STORAGE_ACCOUNT_NAME=<local storage account name>",
        "LOCAL_STORAGE_ACCOUNT_KEY=<local storage account key>"
      ],
      "HostConfig":{
        "Binds":[
            "<mount>"
        ],
        "PortBindings":{
          "11002/tcp":[{"HostPort":"11002"}]
        }
      }
    }
    

    Screenshot: Registerkarte „Optionen für Containererstellung“ auf der Seite „IoT Edge-Modul hinzufügen“

  5. Aktualisieren Sie den in Optionen für Containererstellung kopierten JSON-Code mit folgenden Informationen:

    • Ersetzen Sie <local storage account name> durch einen leicht zu merkenden Namen. Kontonamen sollten 3 bis 24 Zeichen lang sein und nur Kleinbuchstaben und Zahlen enthalten. Leerzeichen sind nicht zulässig.

    • Ersetzen Sie <local storage account key> durch einen Base64-Schlüssel mit 64 Bytes. Sie können einen Schlüssel mit Tools wie GeneratePlus generieren. Sie verwenden diese Anmeldeinformationen, um von anderen Modulen aus auf den Blob-Speicher zuzugreifen.

    • Ersetzen Sie <mount> gemäß Ihrem Containerbetriebssystem. Geben Sie den Namen eines Volumes oder den absoluten Pfad zu einem bestehenden Verzeichnis auf Ihrem IoT Edge-Gerät an, in dem das Blob-Modul seine Daten speichert. Die Speicherbereitstellung ordnet einen Ort auf Ihrem Gerät einem festen Ort im Modul zu.

    Bei Linux-Containern lautet das Format <Ihr Speicherpfad oder -volume>:/blobroot. Zum Beispiel:

    Wichtig

    • Die zweite Hälfte des Werts für die Speicherbereitstellung verweist auf einen bestimmten Ort im Modul „Blob Storage in IoT Edge“ und darf nicht geändert werden. Die Speicherbereitstellung muss immer auf :/blobroot (Linux-Container) enden.

    • IoT Edge entfernt keine Volumes, die an Modulcontainer angefügt sind. Dieses Verhalten ist beabsichtigt und ermöglicht es, dass die Daten über Containerinstanzen wie Upgradeszenarien hinweg beibehalten werden. Wenn diese Volumes jedoch nicht verwendet werden, kann dies zur Erschöpfung des Speicherplatzes auf dem Datenträger und nachfolgenden Systemfehlern führen. Wenn Sie Docker-Volumes in Ihrem Szenario verwenden, empfehlen wir Ihnen, die nicht verwendeten Volumes mithilfe von Docker-Tools wie docker volume prune und docker volume rm zu entfernen – insbesondere bei Produktionsszenarien.

  6. Kopieren Sie den folgenden JSON-Code, und fügen Sie ihn auf der Registerkarte Einstellungen für Modulzwilling in das Feld ein.

    {
      "deviceAutoDeleteProperties": {
        "deleteOn": <true, false>,
        "deleteAfterMinutes": <timeToLiveInMinutes>,
        "retainWhileUploading": <true,false>
      },
      "deviceToCloudUploadProperties": {
        "uploadOn": <true, false>,
        "uploadOrder": "<NewestFirst, OldestFirst>",
        "cloudStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>; EndpointSuffix=<your end point suffix>",
        "storageContainersForUpload": {
          "<source container name1>": {
            "target": "<your-target-container-name>"
          }
        },
        "deleteAfterUpload": <true,false>
      }
    }
    
  7. Konfigurieren Sie die jeweilige Eigenschaft mit einem geeigneten Wert, wie durch die Platzhalter angegeben. Wenn Sie den IoT Edge-Simulator verwenden, setzen Sie die Werte für die entsprechenden Umgebungsvariablen für diese Eigenschaften wie in deviceToCloudUploadProperties und deviceAutoDeleteProperties beschrieben.

    Tipp

    Für Ihren target-Container gelten Einschränkungen hinsichtlich der Benennung, beispielsweise wird die Verwendung des Präfixes $ nicht unterstützt. Sie finden alle Einschränkungen unter Containernamen.

    Hinweis

    Wenn Ihr Containerziel unbenannt oder Null in storageContainersForUpload ist, wird ein Standardname dem Ziel zugewiesen. Wenn Sie den Upload in einen Container beenden möchten, muss er vollständig aus storageContainersForUpload entfernt werden. Weitere Informationen finden Sie im deviceToCloudUploadProperties-Bereich unter Speichern von Daten im Edgebereich mit Azure Blob Storage in IoT Edge .

    Screenshot: Registerkarte „Einstellungen für Modulzwilling“ auf der Seite „IoT Edge-Modul hinzufügen“

    Informationen zum Konfigurieren von „deviceToCloudUploadProperties“ und „deviceAutoDeleteProperties“ nach Bereitstellung Ihres Moduls finden Sie unter Bearbeiten des Modulzwillings. Weitere Informationen zu gewünschten Eigenschaften finden Sie unter Definieren oder Aktualisieren gewünschter Eigenschaften.

  8. Wählen Sie Hinzufügen aus.

  9. Klicken Sie auf Weiter: Routen, um mit dem Abschnitt über Routen fortzufahren.

Angeben von Routen

Behalten Sie die Standardrouten bei und wählen Sie Weiter: Überprüfen und Erstellen, um mit dem Abschnitt Überprüfung fortzufahren.

Überprüfen der Bereitstellung

Im Abschnitt zur Überprüfung wird das JSON-Bereitstellungsmanifest angezeigt, das anhand Ihrer Auswahl in den vorherigen beiden Abschnitten erstellt wurde. Es wurden auch zwei Module deklariert, die Sie nicht hinzugefügt haben: $edgeAgent und $edgeHub. Diese beiden Module bilden die IoT Edge-Runtime und sind in jeder Bereitstellung erforderliche Standardvorgaben.

Überprüfen Sie Ihre Bereitstellungsinformationen, und klicken Sie dann auf Erstellen.

Überprüfen Ihrer Bereitstellung

Nach dem Erstellen der Bereitstellung kehren Sie zur Seite Geräte Ihres IoT-Hubs zurück.

  1. Wählen Sie das IoT Edge-Zielgerät für die Bereitstellung aus, um dessen Details zu öffnen.
  2. Vergewissern Sie sich anhand der Gerätedetails, dass das Blob Storage-Modul als In Bereitstellung angegeben und als Vom Gerät gemeldet aufgeführt ist.

Unter Umständen dauert es einen Moment, bis das Modul auf dem Gerät gestartet und an IoT Hub gemeldet wurde. Aktualisieren Sie die Seite, um einen aktualisierten Status anzuzeigen.

Bereitstellen über Visual Studio Code

Azure IoT Edge bietet Vorlagen in Visual Studio Code, mit denen Sie Edgelösungen entwickeln können. Führen Sie die folgenden Schritte aus, um eine neue IoT Edge-Lösung mit einem Blob Storage-Modul zu erstellen und das Bereitstellungsmanifest zu konfigurieren.

Wichtig

Die Azure IoT Edge-Erweiterung für Visual Studio Code befindet sich im Wartungsmodus.

  1. Wählen Sie Ansicht>Befehlspalette aus.

  2. Geben Sie in der Befehlspalette den folgenden Befehl ein, und führen Sie ihn aus: Azure IoT Edge: New IoT Edge Solution (Azure IoT Edge: Neue IoT Edge-Projektmappe) ein, und führen Sie ihn aus.

    Screenshot: Ausführen der neuen IoT Edge-Lösung

    Folgen Sie den Anweisungen in der Befehlspalette, um Ihre Projektmappe zu erstellen.

    Feld Wert
    Ordner auswählen Wählen Sie den Speicherort auf Ihrem Entwicklungscomputer aus, an dem Visual Studio Code die Projektmappendateien erstellen soll.
    Provide a solution name (Projektmappennamen angeben) Geben Sie für Ihre Projektmappe einen aussagekräftigen Namen ein, oder übernehmen Sie den Standardnamen EdgeSolution.
    Select module template (Modulvorlage auswählen) Wählen Sie die Option Vorhandenes Modul (vollständige Image-URL angeben) aus.
    Provide a module name (Modulname angeben) Geben Sie einen klein geschriebenen Namen für das Modul ein (beispielsweise azureblobstorageoniotedge).

    Es ist wichtig, für das Modul „Azure Blob Storage auf IoT Edge“ einen Namen in Kleinbuchstaben zu verwenden. IoT Edge beachtet bei Modulverweisen die Groß-/Kleinschreibung, und das Storage SDK verwendet standardmäßig Kleinbuchstaben.
    Provide Docker image for the module (Docker-Image für das Modul angeben) Geben Sie den Image-URI an: mcr.microsoft.com/azure-blob-storage:latest

    Visual Studio Code verwendet die angegebenen Informationen, erstellt eine IoT Edge-Projektmappe, und lädt diese in einem neuen Fenster. Die Lösungsvorlage erstellt eine Bereitstellungsmanifestvorlage, die Ihr Blob Storage-Modulimage enthält, allerdings müssen Sie die Erstellungsoptionen des Moduls konfigurieren.

  3. Öffnen Sie deployment.template.json in Ihrem neuen Projektmappenarbeitsbereich, und machen Sie den Abschnitt Module ausfindig. Nehmen Sie folgende Konfigurationsänderungen vor:

    1. Kopieren Sie den folgenden Code und fügen Sie ihn in das Feld createOptions für das Blob-Speichermodul ein:

      
      ```json
      "Env":[
       "LOCAL_STORAGE_ACCOUNT_NAME=<local storage account name>",
       "LOCAL_STORAGE_ACCOUNT_KEY=<local storage account key>"
      ],
      "HostConfig":{
        "Binds": ["<mount>"],
        "PortBindings":{
          "11002/tcp": [{"HostPort":"11002"}]
        }
      }
      

      Screenshot: Aktualisieren von „createOptions“ für das Modul in Visual Studio Code

  4. Ersetzen Sie <local storage account name> durch einen leicht zu merkenden Namen. Kontonamen sollten 3 bis 24 Zeichen lang sein und nur Kleinbuchstaben und Zahlen enthalten. Leerzeichen sind nicht zulässig.

  5. Ersetzen Sie <local storage account key> durch einen Base64-Schlüssel mit 64 Bytes. Sie können einen Schlüssel mit Tools wie GeneratePlus generieren. Sie verwenden diese Anmeldeinformationen, um von anderen Modulen aus auf den Blob-Speicher zuzugreifen.

  6. Ersetzen Sie <mount> gemäß Ihrem Containerbetriebssystem. Geben Sie den Namen eines Volumes oder den absoluten Pfad zu einem Verzeichnis auf Ihrem IoT Edge-Gerät an, auf bzw. unter dem das Blobmodul Daten speichern soll. Die Speicherbereitstellung ordnet einen Ort auf Ihrem Gerät einem festen Ort im Modul zu.

    Bei Linux-Containern lautet das Format <Ihr Speicherpfad oder -volume>:/blobroot. Zum Beispiel:

    Wichtig

    • Die zweite Hälfte des Werts für die Speicherbereitstellung verweist auf einen bestimmten Ort im Modul „Blob Storage in IoT Edge“ und darf nicht geändert werden. Die Speicherbereitstellung muss immer auf :/blobroot (Linux-Container) enden.

    • IoT Edge entfernt keine Volumes, die an Modulcontainer angefügt sind. Dieses Verhalten ist beabsichtigt und ermöglicht es, dass die Daten über Containerinstanzen wie Upgradeszenarien hinweg beibehalten werden. Wenn diese Volumes jedoch nicht verwendet werden, kann dies zur Erschöpfung des Speicherplatzes auf dem Datenträger und nachfolgenden Systemfehlern führen. Wenn Sie Docker-Volumes in Ihrem Szenario verwenden, empfehlen wir Ihnen, die nicht verwendeten Volumes mithilfe von Docker-Tools wie docker volume prune und docker volume rm zu entfernen – insbesondere bei Produktionsszenarien.

  7. Konfigurieren Sie deviceToCloudUploadProperties und deviceAutoDeleteProperties für Ihr Modul, indem Sie der Datei deployment.template.json den folgenden JSON-Code hinzufügen. Konfigurieren Sie die jeweilige Eigenschaft mit einem entsprechenden Wert, und speichern Sie die Datei. Wenn Sie den IoT Edge-Simulator verwenden, setzen Sie die Werte für die entsprechenden Umgebungsvariablen für diese Eigenschaften, die Sie im Abschnitt Erklärung von deviceToCloudUploadProperties und deviceAutoDeleteProperties finden.

    "<your azureblobstorageoniotedge module name>":{
      "properties.desired": {
        "deviceAutoDeleteProperties": {
          "deleteOn": <true, false>,
          "deleteAfterMinutes": <timeToLiveInMinutes>,
          "retainWhileUploading": <true, false>
        },
        "deviceToCloudUploadProperties": {
          "uploadOn": <true, false>,
          "uploadOrder": "<NewestFirst, OldestFirst>",
          "cloudStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>;EndpointSuffix=<your end point suffix>",
          "storageContainersForUpload": {
            "<source container name1>": {
              "target": "<target container name1>"
            }
          },
          "deleteAfterUpload": <true, false>
        }
      }
    }
    

    Screenshot: Festlegen der gewünschten Eigenschaften für azureblobstorageoniotedge in Visual Studio Code

    Informationen zum Konfigurieren von „deviceToCloudUploadProperties“ und „deviceAutoDeleteProperties“ nach Bereitstellung Ihres Moduls finden Sie unter Bearbeiten des Modulzwillings. Weitere Informationen zu Containererstellungsoptionen, Neustartrichtlinien und gewünschtem Status finden Sie unter Gewünschte EdgeAgent-Eigenschaften.

  8. Speichern Sie die Datei deployment.template.json.

  9. Klicken Sie mit der rechten Maustaste auf deployment.template.json, und klicken Sie dann auf IoT Edge-Bereitstellungsmanifest generieren.

  10. Visual Studio Code erstellt anhand der Informationen, die Sie in der Datei deployment.template.json angegeben haben, eine neue Bereitstellungsmanifestdatei. Das Bereitstellungsmanifest wird in einem neuen config-Ordner in Ihrem Projektmappenarbeitsbereich erstellt. Sobald Sie über diese Datei verfügen, können Sie die Schritte unter Bereitstellen von Azure IoT Edge-Modulen über Visual Studio Code oder Bereitstellen von Azure IoT Edge-Modulen mit der Azure CLI durchführen.

Bereitstellen mehrerer Modulinstanzen

Wenn Sie mehrere Instanzen des Moduls „Azure Blob Storage auf IoT Edge“ bereitstellen möchten, müssen Sie einen anderen Speicherpfad angeben und den Wert HostPort ändern, an den das Modul gebunden wird. Die Blob Storage-Module machen immer Port 11002 im Container verfügbar, aber Sie können deklarieren, an welchen Port dieser auf dem Host gebunden wird.

Bearbeiten Sie das Feld Optionen für Containererstellung (im Azure-Portal) oder createOptions (in der Datei deployment.template.json in Visual Studio Code), um den Wert HostPort zu ändern:

"PortBindings":{
  "11002/tcp": [{"HostPort":"<port number>"}]
}

Wenn Sie zusätzliche Blob Storage-Module verbinden, ändern Sie den Endpunkt dahingehend, dass er auf den aktualisierten Hostport zeigt.

Konfigurieren der Proxyunterstützung

Wenn Ihre Organisation einen Proxyserver verwendet, müssen Sie die Proxyunterstützung für die Runtimemodule „edgeAgent“ und „edgeHub“ konfigurieren. Dieser Prozess besteht aus zwei Aufgaben:

  • Konfigurieren Sie die Runtime-Daemons und den IoT Edge-Agent auf dem Gerät.
  • Legen Sie die HTTPS_PROXY-Umgebungsvariable für Module in der JSON-Datei des Bereitstellungsmanifests fest.

Dieser Prozess wird in Konfigurieren eines IoT Edge-Geräts für die Kommunikation über einen Proxyserver beschrieben.

Außerdem erfordert ein Blob Storage-Modul die Einstellung „HTTPS_PROXY“ in der Bereitstellungsdatei für das Manifest. Sie können diese Datei direkt bearbeiten oder dazu das Azure-Portal verwenden.

  1. Navigieren Sie im Azure-Portal zu Ihrem IoT Hub, und wählen Sie Geräte im Menü Geräteverwaltung aus.

  2. Wählen Sie das Gerät mit dem Modul aus, das Sie konfigurieren möchten.

  3. Wählen Sie Module festlegen aus.

  4. Wählen Sie im Abschnitt IoT Edge-Module der Seite das Blob Storage-Modul aus.

  5. Wählen Sie auf der Seite IoT Edge-Modul aktualisieren die Registerkarte Umgebungsvariablen aus.

  6. Wählen Sie HTTPS_PROXY als Name und Ihre Proxy-URL als Wert aus.

    Screenshot: Bereich „IoT Edge-Modul aktualisieren“, in dem Sie die angegebenen Werte eingeben können

  7. Wählen Sie Aktualisieren und danach Überprüfen und Erstellen aus.

  8. Sie sehen, dass der Proxy dem Modul im Bereitstellungsmanifest hinzugefügt wird. Wählen Sie Erstellen aus.

  9. Überprüfen Sie die Einstellung, indem Sie das Modul auf der Seite „Gerätedetails“ auswählen. Wählen Sie dann im unteren Teil der Seite IoT Edge-Module – Details die Registerkarte Umgebungsvariablen aus.

    Screenshot: Registerkarte „Umgebungsvariablen“

Nächste Schritte

Informieren Sie sich ausführlicher über Azure Blob Storage in IoT Edge.

Weitere Informationen zur Funktionsweise und Erstellung von Bereitstellungsmanifesten finden Sie unter Verstehen, wie IoT Edge-Module verwendet, konfiguriert und wiederverwendet werden können.