Distribuire l'Archiviazione BLOB di Azure su un modulo IoT Edge al dispositivo
Si applica a: IoT Edge 1.5 IoT Edge 1.4
Importante
IoT Edge 1.5 LTS e IoT Edge 1.4 LTS sono versioni supportate. IoT Edge 1.4 LTS raggiungerà il 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 si dispone di un dispositivo IoT Edge configurato, è possibile crearne uno in una macchina virtuale di Azure. Seguire la procedura descritta in uno di questi articoli della guida introduttiva per Creare un dispositivo Linux virtuale o Creare un dispositivo Windows virtuale.
Estensione Azure IoT Edge. L'estensione Azure IoT Edge Tools per Visual Studio Code è in modalità manutenzione.
Estensione Hub IoT di Azure se si esegue la distribuzione da Visual Studio Code.
Eseguire la distribuzione dal portale di Azure
Il portale di Azure consente di creare un manifesto della distribuzione ed eseguire il push della distribuzione in un dispositivo IoT Edge.
Selezionare il dispositivo
- Accedere al portale di Azure e passare all'hub IoT.
- Selezionare Dispositivi nel menu Gestione dispositivi.
- Selezionare il dispositivo IoT Edge di destinazione dall'elenco.
- 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. La procedura è composta da tre passaggi organizzati in schede: Moduli, Route e Rivedi e crea.
Aggiungere moduli
Nella sezione Moduli IoT Edge della pagina selezionare il menu a discesa Aggiungi e selezionare Modulo IoT Edge per visualizzare la pagina Aggiungi modulo IoT Edge.
Nella scheda Impostazioni specificare un nome per il modulo e quindi specificare l'URI dell'immagine del contenitore:
- Nome del modulo IoT Edge:
azureblobstorageoniotedge
- URI immagine:
mcr.microsoft.com/azure-blob-storage:latest
Non selezionare Aggiungi fino a quando non sono stati specificati i valori nelle schede Impostazioni modulo, Opzioni di creazione del contenitore e Impostazioni modulo gemello, come descritto in questa procedura.
Importante
Azure IoT Edge distingue tra maiuscole e minuscole quando si effettuano chiamate ai moduli e Storage SDK usa per impostazione predefinita caratteri minuscoli. La modifica del nome con caratteri minuscoli consente di garantire che le connessioni al modulo Archiviazione BLOB di Azure in IoT Edge non vengano interrotte.
- Nome del modulo IoT Edge:
Aprire la scheda Opzioni di creazione del contenitore.
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"}] } } }
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 di account devono essere compresi tra i 3 e i 24 caratteri e includere lettere minuscole e numeri. Nessuno spazio.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'archiviazione BLOB da altri moduli.Sostituire
<mount>
a seconda del 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 è <percorso di archiviazione o volume>:/blobroot. Ad esempio:
- Usare il montaggio del volume:
my-volume:/blobroot
- Usare il montaggio di associazione:
/srv/containerdata:/blobroot
. Assicurarsi di seguire la procedura per concedere all'utente del contenitore l'accesso alla directory
Importante
Non modificare la seconda metà del valore di montaggio dell'archiviazione, che punta a una posizione specifica in Archiviazione BLOB per il modulo IoT Edge. Il montaggio di 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 gli strumenti Docker, come docker volume prune e docker volume rm per rimuovere i volumi inutilizzati, in particolare per gli scenari di produzione.
Nella scheda Impostazioni modulo gemello 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> } }
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 contenitore
target
presenta restrizioni di denominazione, ad esempio l'uso di un prefisso$
non è supportato. Per visualizzare tutte le restrizioni, vedere Nomi dei contenitori.Nota
Se la destinazione del contenitore è senza nome o è null all'interno di
storageContainersForUpload
, alla destinazione verrà assegnato un nome predefinito. Se si vuole interrompere il caricamento in un contenitore, è necessario rimuoverlo completamente dastorageContainersForUpload
. Per altre informazioni, vedere la sezionedeviceToCloudUploadProperties
di Archiviare i dati nei dispositivi perimetrali con Archiviazione BLOB di Azure in 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.
Selezionare Aggiungi.
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. Sono presenti 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.
Controllare le informazioni sulla distribuzione e quindi selezionare Crea.
Verificare la distribuzione
Dopo la creazione della distribuzione, si torna alla pagina Dispositivi dell'hub IoT.
- Selezionare il dispositivo IoT Edge impostato come destinazione della distribuzione per aprirne i dettagli.
- Nei dettagli del dispositivo verificare che il modulo di archiviazione BLOB sia elencato sia come Specificato nella distribuzione che come Segnalato dal dispositivo.
Per l'avvio del modulo nel dispositivo e per il rilevamento da parte dell'hub IoT può essere richiesto un po' di tempo. Aggiornare la pagina per visualizzare lo stato aggiornato.
Eseguire la distribuzione da Visual Studio Code
Azure IoT Edge fornisce modelli di Visual Studio Code per assistere allo sviluppo di soluzioni per dispositivi perimetrali. Seguire i passaggi seguenti 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 per Visual Studio Code è in modalità manutenzione.
Selezionare Visualizza>Riquadro comandi.
Nel riquadro comandi immettere ed eseguire il comando Azure IoT Edge: New IoT Edge solution (Azure IoT Edge: Nuova soluzione IoT Edge).
Seguire i prompt nel riquadro comandi per creare la soluzione.
Campo valore Seleziona cartella Nel computer di sviluppo scegliere la posizione in cui Visual Studio Code dovrà 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 per il modulo con caratteri tutti minuscoli, 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.
Aprire deployment.template.json nell'area di lavoro della nuova soluzione e trovare la sezione moduli. Apportare le modifiche seguenti alla configurazione:
Copiare e incollare il codice seguente nel campo
createOptions
del 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"}] } }
Sostituire
<local storage account name>
con un nome facile da ricordare. I nomi di account devono essere compresi tra i 3 e i 24 caratteri e includere lettere minuscole e numeri. Nessuno spazio.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'archiviazione BLOB da altri moduli.Sostituire
<mount>
a seconda del 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 è <percorso di archiviazione o volume>:/blobroot. Ad esempio:
- Usare il montaggio del volume:
my-volume:/blobroot
- Usare il montaggio di associazione:
/srv/containerdata:/blobroot
. Assicurarsi di seguire la procedura per concedere all'utente del contenitore l'accesso alla directory
Importante
Non modificare la seconda metà del valore di montaggio dell'archiviazione, che punta a una posizione specifica in Archiviazione BLOB per il modulo IoT Edge. Il montaggio di 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 gli strumenti Docker, come docker volume prune e docker volume rm per rimuovere i volumi inutilizzati, in particolare per gli scenari di produzione.
- Usare il montaggio del volume:
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 descrizione 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> } } }
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 dei contenitore, i criteri di riavvio e lo stato desiderato, vedere Proprietà desiderate di EdgeAgent.
Salvare il file deployment.template.json.
Fare clic con il pulsante destro del mouse su deployment.template.json e selezionare Generare manifesto di distribuzione di IoT Edge.
Visual Studio Code richiede le informazioni fornite in deployment.template.json e le usa per creare un nuovo file del manifesto di distribuzione. Il manifesto di distribuzione viene creato in una nuova cartella config nell'area di lavoro della soluzione. Dopo aver creato il file, è possibile seguire la procedura descritta in Distribuire i moduli di Azure IoT Edge con l'interfaccia della riga di comando di Azure 2.0.
Distribuire più istanze del modulo
Se si vogliono distribuire più istanze del modulo Archiviazione BLOB di Azure in IoT Edge, è necessario specificare un percorso di archiviazione diverso e modificare il valore HostPort
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 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 valore HostPort
:
"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 del manifesto. È possibile modificare direttamente il file manifesto della distribuzione o usare il portale di Azure.
Passare all'hub IoT nel portale di Azure e selezionare Dispositivi nel menu Gestione dispositivi
Selezionare il dispositivo con il modulo da configurare.
Selezionare Set Modules (Configura i moduli).
Nella sezione Moduli IoT Edge della pagina selezionare il modulo di archiviazione BLOB.
Nella pagina Aggiorna modulo IoT Edge selezionare la scheda Variabili di ambiente.
Aggiungere
HTTPS_PROXY
per il Nome e l'URL proxy per il Valore.Selezionare Aggiorna, quindi Rivedi e crea.
Verificare che il proxy sia stato aggiunto al modulo nel manifesto della distribuzione e selezionare Crea.
Verificare l'impostazione selezionando il modulo nella pagina dei dettagli del dispositivo e nella parte inferiore della pagina Dettagli del modulo IoT Edge selezionare la scheda Variabili di ambiente.
Passaggi successivi
Altre informazioni su 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.