Distribuire l'Archiviazione BLOB di Azure su un modulo IoT Edge al dispositivo

Si applica a:Segno di spunta IoT Edge 1.5 IoT Edge 1.5 Segno di spunta IoT Edge 1.4 IoT Edge 1.4

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 LTS sono versioni supportate. IoT Edge 1.4 LTS è di fine vita il 12 novembre 2024. Se si usa una versione precedente, vedere Aggiornare IoT Edge.

Esistono diversi modi per distribuire moduli in un dispositivo IoT Edge e tutti sono idonei per Archiviazione BLOB di Azure nei moduli IoT Edge. I due metodi più semplici consistono nell'usare i modelli di Visual Studio Code o il portale di Azure.

Prerequisiti

  • Un hub IoT nella sottoscrizione di Azure.

  • Un dispositivo IoT Edge.

    Se non è configurato un dispositivo IoT Edge, è possibile crearne uno in una macchina virtuale di Azure. Seguire la procedura descritta in uno degli articoli di avvio rapido su Creare un dispositivo Linux virtuale o Creare un dispositivo Windows virtuale.

  • Visual Studio Code.

  • Estensione Azure IoT Edge . L'estensione Azure IoT Edge Tools per Visual Studio Code è in modalità di manutenzione.

  • hub IoT di Azure'estensione se si esegue la distribuzione da Visual Studio Code.

Eseguire la distribuzione dal portale di Azure

Il portale di Azure illustra la creazione di un manifesto della distribuzione e il push della distribuzione in un dispositivo IoT Edge.

Selezionare il dispositivo

  1. Accedere al portale di Azure e passare all'hub IoT.
  2. Selezionare Dispositivi nel menu Gestione dispositivi.
  3. Selezionare il dispositivo IoT Edge di destinazione dall'elenco.
  4. Selezionare Set Modules (Configura i moduli).

Configurare un manifesto della distribuzione

Un manifesto della distribuzione è un documento JSON contenente la descrizione dei moduli da distribuire, dei flussi di dati esistenti tra i moduli e delle proprietà desiderate dei moduli gemelli. Il portale di Azure include una procedura guidata che illustra la creazione di un manifesto della distribuzione. Include tre passaggi organizzati in schede: Moduli, Route e Rivedi e Crea.

Aggiungere moduli

  1. Nella sezione Moduli IoT Edge della pagina selezionare l'elenco a discesa Aggiungi e selezionare Modulo IoT Edge per visualizzare la pagina Aggiungi modulo IoT Edge.

  2. Nella scheda Impostazioni specificare un nome per il modulo e quindi specificare l'URI dell'immagine del contenitore:

    Esempi:

    • Nome modulo IoT Edge: azureblobstorageoniotedge
    • URI immagine: mcr.microsoft.com/azure-blob-storage:latest

    Screenshot che mostra la scheda Modulo Impostazioni della pagina Aggiungi modulo IoT Edge.

    Non selezionare Aggiungi fino a quando non sono stati specificati valori nelle schede Modulo Impostazioni, Creazione contenitori e Modulo gemello Impostazioni come descritto in questa procedura.

    Importante

    Azure IoT Edge fa distinzione tra maiuscole e minuscole quando si effettuano chiamate ai moduli e anche Archiviazione SDK è in minuscolo. Anche se il nome del modulo in Azure Marketplace è AzureBlob Archiviazione onIoTEdge, la modifica del nome in minuscolo consente di garantire che le connessioni al modulo Archiviazione BLOB di Azure in IoT Edge non vengano interrotte.

  3. Aprire la scheda Opzioni di creazione del contenitore.

  4. Copiare e incollare il codice JSON seguente nella casella per fornire informazioni sull'account di archiviazione e un montaggio per l'archiviazione nel dispositivo.

    {
      "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 che mostra la scheda Opzioni di creazione del contenitore della pagina Aggiungi modulo IoT Edge.

  5. Aggiornare il codice JSON copiato in Opzioni di creazione del contenitore con le informazioni seguenti:

    • Sostituire <local storage account name> con un nome facile da ricordare. I nomi degli account devono essere lunghi da 3 a 24 caratteri, con lettere minuscole e numeri. Nessuna spazi.

    • Sostituire <local storage account key> con una chiave Base64 a 64 byte. È possibile generare una chiave con strumenti quali GeneratePlus. Queste credenziali vengono usate per accedere all'archivio BLOB da altri moduli.

    • Sostituire <mount> in base al sistema operativo del contenitore. Specificare il nome di un volume o il percorso assoluto di una directory esistente nel dispositivo IoT Edge in cui il modulo BLOB archivia i dati. Il montaggio di archiviazione esegue il mapping di una posizione nel dispositivo fornito a una posizione impostata nel modulo.

    Per i contenitori Linux, il formato è <il percorso di archiviazione o volume>:/blobroot. Ad esempio:

    Importante

    • Non modificare la seconda metà del valore di montaggio dell'archiviazione, che punta a una posizione specifica nel Archiviazione BLOB nel modulo IoT Edge. Il montaggio dell'archiviazione deve sempre terminare con :/blobroot per i contenitori Linux.

    • IoT Edge non rimuove i volumi collegati ai contenitori del modulo. Questo comportamento è previsto da progettazione, perché consente di rendere persistenti i dati tra istanze del contenitore, ad esempio gli scenari di aggiornamento. Tuttavia, se questi volumi vengono lasciati inutilizzati, ciò può causare l'esaurimento dello spazio su disco e conseguenti errori di sistema. Se si usano volumi Docker nello scenario, è consigliabile usare strumenti Docker come docker volume prune e docker volume rm per rimuovere i volumi inutilizzati, in particolare per gli scenari di produzione.

  6. Nella scheda Modulo gemello Impostazioni copiare il codice JSON seguente e incollarlo nella casella.

    {
      "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. Configurare ogni proprietà con un valore appropriato, come indicato dai segnaposto. Se si usa il simulatore IoT Edge, impostare i valori sulle variabili di ambiente correlate per queste proprietà come descritto da deviceToCloudUploadProperties e deviceAutoDeleteProperties.

    Suggerimento

    Il nome del target contenitore presenta restrizioni di denominazione, ad esempio l'uso di un $ prefisso non è supportato. Per visualizzare tutte le restrizioni, visualizzare i nomi dei contenitori.

    Nota

    Se la destinazione del contenitore è senza nome o null all'interno storageContainersForUploaddi , alla destinazione verrà assegnato un nome predefinito. Se si vuole interrompere il caricamento in un contenitore, è necessario rimuoverlo completamente da storageContainersForUpload. Per altre informazioni, vedere la deviceToCloudUploadProperties sezione Archiviare i dati nella rete perimetrale con Archiviazione BLOB di Azure in IoT Edge.

    Screenshot che mostra la scheda Modulo gemello Impostazioni della pagina Aggiungi modulo IoT Edge.

    Per informazioni sulla configurazione di deviceToCloudUploadProperties e deviceAutoDeleteProperties dopo la distribuzione del modulo, vedere Modificare il modulo gemello. Per altre informazioni sulle proprietà desiderate, vedere Definire o aggiornare le proprietà desiderate.

  8. Selezionare Aggiungi.

  9. Selezionare Avanti: Route per continuare con la sezione route.

Specificare le route

Mantenere le route predefinite e selezionare Avanti: Rivedi e crea per continuare con la sezione di revisione.

Rivedere la distribuzione

La sezione relativa alla verifica mostra il manifesto della distribuzione JSON che è stato creato in base alle selezioni nelle due sezioni precedenti. Esistono anche due moduli dichiarati che non sono stati aggiunti: $edgeAgent e $edgeHub. Questi due moduli costituiscono il runtime di IoT Edge e sono impostazioni predefinite obbligatorie in ogni distribuzione.

Esaminare le informazioni sulla distribuzione e quindi selezionare Crea.

Verificare la distribuzione

Dopo aver creato la distribuzione, tornare alla pagina Dispositivi dell'hub IoT.

  1. Selezionare il dispositivo IoT Edge impostato come destinazione della distribuzione per aprirne i dettagli.
  2. Nei dettagli del dispositivo verificare che il modulo di archiviazione BLOB sia elencato sia come Specificato nella distribuzione che come Segnalato dal dispositivo.

L'avvio del modulo nel dispositivo potrebbe richiedere alcuni istanti e quindi riportarlo a hub IoT. Aggiornare la pagina per visualizzare lo stato aggiornato.

Distribuire da Visual Studio Code

Azure IoT Edge fornisce modelli di Visual Studio Code per assistere allo sviluppo di soluzioni per dispositivi perimetrali. Usare la procedura seguente per creare una nuova soluzione IoT Edge con un modulo di archiviazione BLOB e configurare il manifesto della distribuzione.

Importante

L'estensione Azure IoT Edge di Visual Studio Code è in modalità di manutenzione.

  1. Selezionare Visualizza>Riquadro comandi.

  2. Nel riquadro comandi immettere ed eseguire il comando Azure IoT Edge: New IoT Edge solution (Azure IoT Edge: Nuova soluzione IoT Edge).

    Screenshot che mostra come eseguire la nuova soluzione IoT Edge.

    Seguire i prompt nel riquadro comandi per creare la soluzione.

    Campo valore
    Seleziona cartella Scegliere il percorso nel computer di sviluppo per Visual Studio Code per creare i file della soluzione.
    Provide a solution name (Specificare un nome per la soluzione) Immettere un nome descrittivo per la soluzione oppure accettare quello predefinito EdgeSolution.
    Select module template (Selezionare un modello di modulo) Scegliere Existing Module (Enter full image URL) (Modulo esistente - Immettere l'URL completo dell'immagine).
    Provide a module name (Specificare un nome per il modulo) Immettere un nome tutto minuscolo per il modulo, ad esempio azureblobstorageoniotedge.

    È importante usare un nome in lettere minuscole per il modulo Azure Blob Storage on IoT Edge. IoT Edge distingue tra maiuscole e minuscole nei riferimenti ai moduli e Storage SDK usa per impostazione predefinita caratteri minuscoli.
    Provide Docker image for the module (Specificare l'immagine Docker per il modulo) Specificare l'URI dell'immagine: mcr.microsoft.com/azure-blob-storage:latest

    Visual Studio Code usa le informazioni specificate per creare una soluzione IoT Edge e quindi la carica in una nuova finestra. Il modello di soluzione crea un modello di manifesto della distribuzione che include l'immagine del modulo di archiviazione BLOB, ma è necessario configurare le opzioni per la creazione del modulo.

  3. Aprire deployment.template.json nell'area di lavoro della nuova soluzione e trovare la sezione moduli. Apportare le modifiche seguenti alla configurazione:

    1. Copiare e incollare il codice seguente nel createOptions campo per il modulo di archiviazione BLOB:

      
      ```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 che mostra come aggiornare il modulo createOptions in Visual Studio Code.

  4. Sostituire <local storage account name> con un nome facile da ricordare. I nomi degli account devono essere lunghi da 3 a 24 caratteri, con lettere minuscole e numeri. Nessuna spazi.

  5. Sostituire <local storage account key> con una chiave Base64 a 64 byte. È possibile generare una chiave con strumenti quali GeneratePlus. Queste credenziali vengono usate per accedere all'archivio BLOB da altri moduli.

  6. Sostituire <mount> in base al sistema operativo del contenitore. Specificare il nome di un volume o il percorso assoluto in una directory nel dispositivo IoT Edge in cui si desidera che il modulo BLOB archivi i suoi dati. Il montaggio di archiviazione esegue il mapping di una posizione nel dispositivo fornito a una posizione impostata nel modulo.

    Per i contenitori Linux, il formato è <il percorso di archiviazione o volume>:/blobroot. Ad esempio:

    Importante

    • Non modificare la seconda metà del valore di montaggio dell'archiviazione, che punta a una posizione specifica nel Archiviazione BLOB nel modulo IoT Edge. Il montaggio dell'archiviazione deve sempre terminare con :/blobroot per i contenitori Linux.

    • IoT Edge non rimuove i volumi collegati ai contenitori del modulo. Questo comportamento è previsto da progettazione, perché consente di rendere persistenti i dati tra istanze del contenitore, ad esempio gli scenari di aggiornamento. Tuttavia, se questi volumi vengono lasciati inutilizzati, ciò può causare l'esaurimento dello spazio su disco e conseguenti errori di sistema. Se si usano volumi Docker nello scenario, è consigliabile usare strumenti Docker come docker volume prune e docker volume rm per rimuovere i volumi inutilizzati, in particolare per gli scenari di produzione.

  7. Configurare deviceToCloudUploadProperties e deviceAutoDeleteProperties per il modulo aggiungendo il codice JSON seguente al file deployment.template.json. Configurare ogni proprietà con un valore appropriato e salvare il file. Se si usa il simulatore IoT Edge, impostare i valori sulle variabili di ambiente correlate per queste proprietà, che è possibile trovare nella sezione di spiegazione di deviceToCloudUploadProperties e deviceAutoDeleteProperties

    "<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 che mostra come impostare le proprietà desiderate per azureblobstorageoniotedge in Visual Studio Code.

    Per informazioni sulla configurazione di deviceToCloudUploadProperties e deviceAutoDeleteProperties dopo la distribuzione del modulo, vedere Modificare il modulo gemello. Per altre informazioni sulle opzioni di creazione del contenitore, sui criteri di riavvio e sullo stato desiderato, vedere Proprietà desiderate di EdgeAgent.

  8. Salvare il file deployment.template.json.

  9. Fare clic con il pulsante destro del mouse su deployment.template.json e selezionare Generare manifesto di distribuzione di IoT Edge.

  10. Visual Studio Code accetta le informazioni fornite in deployment.template.json e le usa per creare un nuovo file manifesto di distribuzione. Il manifesto di distribuzione viene creato in una nuova cartella config nell'area di lavoro della soluzione. Dopo aver creato tale file, è possibile seguire i passaggi descritti in Distribuire i moduli di Azure IoT Edge da Visual Studio Code oppure Distribuire i moduli di Azure IoT Edge con l'interfaccia della riga di comando 2.0 di Azure.

Distribuire più istanze del modulo

Se si vogliono distribuire più istanze del modulo Archiviazione BLOB di Azure in IoT Edge, è necessario fornire un percorso di archiviazione diverso e modificare il HostPort valore a cui il modulo è associato. I moduli di archiviazione BLOB espongono sempre la porta 11002 nel contenitore, ma è possibile dichiarare a quale porta sono associati nell'host.

Modificare le opzioni di creazione del contenitore (nel portale di Azure) o il campo createOptions (nel file deployment.template.json in Visual Studio Code) per modificare il HostPort valore:

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

Quando ci si connette ai moduli di archiviazione BLOB aggiuntivi, modificare l'endpoint in modo che punti alla porta host aggiornata.

Configurare il supporto del proxy

Se l'organizzazione usa un server proxy, è necessario configurare il supporto proxy per i moduli di runtime edgeAgent e edgeHub. Questo processo prevede due attività:

  • Configurare i daemon di runtime e l'agente IoT Edge nel dispositivo.
  • Impostare la variabile di ambiente HTTPS_PROXY per i moduli nel file JSON del manifesto della distribuzione.

Questo processo è descritto in Configurare un dispositivo IoT Edge per comunicare tramite un server proxy.

Inoltre, un modulo di archiviazione BLOB richiede anche l'impostazione HTTPS_PROXY nel file di distribuzione manifesto. È possibile modificare direttamente il file manifesto della distribuzione o usare il portale di Azure.

  1. Passare al hub IoT nel portale di Azure e selezionare Dispositivi nel menu Gestione dispositivi

  2. Selezionare il dispositivo con il modulo da configurare.

  3. Selezionare Set Modules (Configura i moduli).

  4. Nella sezione Moduli IoT Edge della pagina selezionare il modulo di archiviazione BLOB.

  5. Nella pagina Aggiorna modulo IoT Edge selezionare la scheda Variabili di ambiente.

  6. Aggiungere HTTPS_PROXY per Il nome e l'URL del proxy per Il valore.

    Screenshot che mostra il riquadro Aggiorna modulo IoT Edge in cui è possibile immettere i valori specificati.

  7. Selezionare Aggiorna, quindi Rivedi e crea.

  8. Vedere il proxy viene aggiunto al modulo nel manifesto della distribuzione e selezionare Crea.

  9. Verificare l'impostazione selezionando il modulo nella pagina dei dettagli del dispositivo e nella parte inferiore della pagina Dettagli moduli IoT Edge selezionare la scheda Variabili di ambiente.

    Screenshot che mostra la scheda Variabili di ambiente.

Passaggi successivi

Altre informazioni sulle Archiviazione BLOB di Azure in IoT Edge.

Per altre informazioni sul funzionamento e sulla modalità di creazione dei manifesti della distribuzione, vedere Informazioni su come usare, configurare e riusare i moduli IoT Edge.