Déployer le module de stockage Blob Azure sur IoT Edge vers votre appareil
S’applique à : IoT Edge 1.5 IoT Edge 1.4
Important
IoT Edge 1.5 LTS et IoT Edge 1.4 LTS sont des versions prises en charge. IoT Edge 1.4 LTS sera en fin de vie le 12 novembre 2024. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.
Il existe plusieurs façons de déployer des modules sur un appareil IoT Edge, et toutes fonctionnent pour les modules de stockage Blob Azure sur IoT Edge. Les deux méthodes les plus simples consistent à utiliser les modèles de Visual Studio Code ou du portail Azure.
Prérequis
Un hub IoT dans votre abonnement Azure.
Un appareil IoT Edge.
Si vous n’avez aucun appareil IoT Edge configuré, vous pouvez en créer un sur une machine virtuelle Azure. Suivez les étapes décrites dans l’un des articles de démarrage rapide pour Créer un appareil Linux virtuel ou Créer un appareil Windows virtuel.
Extension Azure IoT Edge. L’extension Outils Azure IoT Edge pour Visual Studio Code est en mode maintenance.
Extension Azure IoT Hub en cas de déploiement depuis Visual Studio Code.
Effectuer un déploiement à partir du portail Azure
Le Portail Azure vous aide à créer un manifeste de déploiement et à étendre le déploiement à un appareil IoT Edge.
Sélectionner votre appareil
- Connectez-vous au portail Azure et accédez à votre IoT Hub.
- Sélectionnez Appareils dans le menu Gestion des périphériques.
- Sélectionnez l’appareil IoT Edge cible dans la liste.
- Sélectionnez Définir modules.
Configurer un manifeste de déploiement
Un manifeste de déploiement est un document JSON qui décrit les modules à déployer, le flux des données entre les modules et les propriétés souhaitées des jumeaux de module. Le portail Azure comprend un Assistant qui vous guide lors de la création du manifeste de déploiement. Elle se compose de trois étapes organisées sous forme d’onglets : Modules, Itinéraires et Vérifier + créer.
Ajouter des modules
Dans la section Modules IoT Edge de la page, sélectionnez la liste déroulante Ajouter, puis sélectionnez Module IoT Edge pour afficher la page Ajouter un module IoT Edge.
Sous l’onglet Paramètres, fournissez un nom pour le module et spécifiez l’URI de l’image conteneur :
- Nom du module IoT Edge :
azureblobstorageoniotedge
- URI de l’image :
mcr.microsoft.com/azure-blob-storage:latest
Ne sélectionnez pas Ajouter tant que vous n’avez pas spécifié de valeur sous les onglets Paramètres du module, Options de création de conteneur et Paramètres du jumeau de module, comme décrit dans cette procédure.
Important
Azure IoT Edge respecte la casse lorsque vous effectuez des appels de modules, et le SDK de stockage utilise également des minuscules par défaut. Le fait de changer le nom (en) minuscules permet de s’assurer que les connexions au Stockage Blob Azure sur le module IoT Edge ne sont pas interrompues.
- Nom du module IoT Edge :
Ouvrez l’onglet Options de création de conteneur.
Copiez et collez le code JSON suivant dans la zone afin de fournir des informations sur le compte de stockage et un montage pour le stockage sur votre appareil.
{ "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"}] } } }
Mettez à jour le JSON que vous avez copié dans Options de création de conteneur avec les informations suivantes :
Remplacez
<local storage account name>
par un nom que vous pouvez mémoriser. Les noms de compte doivent être compris entre 3 et 24 caractères, et inclure des lettres minuscules et des chiffres. Pas d’espace.Remplacez
<local storage account key>
par une clé en base64 de 64 octets. Vous pouvez générer une clé avec des outils tels que GeneratePlus. Vous utilisez ces informations d’identification pour accéder au stockage de blobs à partir d’autres modules.Remplacez
<mount>
en fonction du système d’exploitation de votre conteneur. Indiquez le nom d’un volume ou le chemin absolu d’un répertoire existant sur votre appareil IoT Edge où le module de blob stocke ses données. Le montage associe un emplacement sur votre appareil que vous fournissez à un emplacement défini dans le module.
Pour les conteneurs Linux, le format est <chemin de votre stockage ou volume>:/blobroot. Par exemple :
- Utiliser montage de volume :
my-volume:/blobroot
- utilisez le montage de liaison :
/srv/containerdata:/blobroot
. Veillez à suivre les étapes pour octroyer l’accès à l’annuaire à l’utilisateur du conteneur
Important
Ne modifiez pas la deuxième moitié de la valeur de montage de stockage, qui pointe vers un emplacement spécifique dans le Stockage Blob sur le module IoT Edge. Le montage de stockage doit toujours se terminer par :/blobroot pour les conteneurs Linux.
IoT Edge ne supprime pas les volumes attachés à des conteneurs de module. Ce comportement est par conception, car il permet de conserver les données entre les instances de conteneur, comme par exemple dans les scénarios de mise à niveau. Toutefois, si ces volumes sont laissés inutilisés, cela peut entraîner un épuisement de l’espace disque et des erreurs système ultérieures. Si vous utilisez des volumes Docker dans votre scénario, nous vous encourageons à utiliser des outils Docker tels que docker volume prune et docker volume rm pour supprimer les volumes inutilisés, en particulier pour les scénarios de production.
Sous l’onglet Paramètres de jumeau de module, copiez le code JSON suivant et collez-le dans la zone.
{ "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> } }
Configurez chaque propriété avec une valeur appropriée, comme indiqué par les espaces réservés. Si vous utilisez le simulateur IoT Edge, définissez les valeurs sur les variables d’environnement associées pour ces propriétés, telles que décrites par deviceToCloudUploadProperties et deviceAutoDeleteProperties.
Conseil
Le nom de votre conteneur
target
a des restrictions d’affectation de noms, par exemple l’utilisation d’un préfixe$
n’est pas pris en charge. Pour afficher toutes les restrictions, affichez les noms de conteneur.Remarque
Si votre cible de conteneur n’est pas nommée ou a une valeur nulle dans
storageContainersForUpload
, un nom par défaut est attribué à la cible. Si vous souhaitez arrêter le chargement sur un conteneur, il doit être supprimé complètement destorageContainersForUpload
. Pour plus d’informations, consultez la sectiondeviceToCloudUploadProperties
de Stockage de données en périphérie avec le Stockage Blob Azure sur IoT Edge.Pour plus d’informations sur la configuration de deviceToCloudUploadProperties et deviceAutoDeleteProperties une fois votre module déployé, consultez Modifier le jumeau de module. Pour plus d’informations sur les propriétés souhaitées, consultez Définir ou mettre à jour les propriétés souhaitées.
Sélectionnez Ajouter.
Sélectionnez Suivant : Itinéraires pour passer à la section Itinéraires.
Spécifier des routes
Conservez les itinéraires par défaut, puis sélectionnez Suivant : Vérifier + créer pour passer à la section de vérification.
Vérifier le déploiement
La section de vérification vous montre le manifeste de déploiement JSON qui a été créé en fonction de vos sélections dans les deux sections précédentes. Il existe également deux modules déclarés que vous n’avez pas ajoutés : $edgeAgent et $edgeHub. Ces deux modules composent le runtime IoT Edge et sont des valeurs par défaut requises dans chaque déploiement.
Vérifiez les informations de votre déploiement, puis sélectionnez Créer.
Vérifier votre déploiement
Une fois le déploiement créé, vous êtes redirigé vers la page Appareils de votre hub IoT.
- Sélectionnez l’appareil IoT Edge que vous avez ciblé avec le déploiement pour accéder à ses informations détaillées.
- Dans les détails de l’appareil, vérifiez que le module de stockage d’objets blob figure dans Spécifié dans le déploiement et Signalé par l’appareil.
Le démarrage du module sur l’appareil et son signalement à IoT Hub peuvent prendre quelques instants. Actualisez la page pour afficher un état mis à jour.
Déployer à partir de Visual Studio Code
Azure IoT Edge fournit des modèles dans Visual Studio Code pour vous aider à développer des solutions de périphérie. Effectuez les étapes suivantes pour créer une solution IoT Edge avec un module de stockage d’objets blob, et pour configurer le manifeste de déploiement.
Important
L’extension Azure IoT Edge Visual Studio Code est en mode maintenance.
Sélectionnez Afficher>Palette de commandes.
Dans la palette de commandes, entrez et exécutez la commande Azure IoT Edge: New IoT Edge solution.
Suivez les invites de la palette de commandes pour créer votre solution.
Champ Valeur Sélectionner le dossier Choisissez l’emplacement sur votre machine de développement pour que Visual Studio Code crée les fichiers de la solution. Provide a solution name (Nommer la solution) Entrez un nom descriptif pour votre solution ou acceptez le nom par défaut (EdgeSolution). Select module template (Sélectionner un modèle de module) Choisissez Module existant (Entrez l’URL de l’image complète). Provide a module name (Nommer le module) Entrez un nom en minuscules pour votre module, par exemple azureblobstorageoniotedge.
Il est important d’utiliser un nom en minuscules pour le stockage Blob Azure sur le module IoT Edge. IoT Edge respecte la casse lorsque vous faites référence aux modules, et le SDK de stockage figure par défaut en minuscules.Indiquer une image Docker pour le module Fournissez l’URI de l’image : mcr.microsoft.com/azure-blob-storage:latest À partir des informations que vous avez fournies, Visual Studio Code crée une solution IoT Edge, puis la charge dans une nouvelle fenêtre. Le modèle de solution crée un modèle de manifeste de déploiement qui inclut votre image du module de stockage d’objets blob, à condition pour cela de configurer les options de création du module.
Ouvrez deployment.template.json dans l’espace de travail de votre nouvelle solution et recherchez la section modules. Modifiez la configuration comme suit :
Copiez et collez le code suivant dans le champ
createOptions
du module de stockage de blobs :```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"}] } }
Remplacez
<local storage account name>
par un nom que vous pouvez mémoriser. Les noms de compte doivent être compris entre 3 et 24 caractères, et inclure des lettres minuscules et des chiffres. Pas d’espace.Remplacez
<local storage account key>
par une clé en base64 de 64 octets. Vous pouvez générer une clé avec des outils tels que GeneratePlus. Vous utilisez ces informations d’identification pour accéder au stockage de blobs à partir d’autres modules.Remplacez
<mount>
en fonction du système d’exploitation de votre conteneur. Indiquez le nom d’un volume ou le chemin absolu à un répertoire sur votre appareil IoT Edge où vous souhaitez que le module d’objets blob stocke ses données. Le montage associe un emplacement sur votre appareil que vous fournissez à un emplacement défini dans le module.Pour les conteneurs Linux, le format est <chemin de votre stockage ou volume>:/blobroot. Par exemple :
- Utiliser montage de volume :
my-volume:/blobroot
- utilisez le montage de liaison :
/srv/containerdata:/blobroot
. Veillez à suivre les étapes pour octroyer l’accès à l’annuaire à l’utilisateur du conteneur
Important
Ne modifiez pas la deuxième moitié de la valeur de montage de stockage, qui pointe vers un emplacement spécifique dans le Stockage Blob sur le module IoT Edge. Le montage de stockage doit toujours se terminer par :/blobroot pour les conteneurs Linux.
IoT Edge ne supprime pas les volumes attachés à des conteneurs de module. Ce comportement est par conception, car il permet de conserver les données entre les instances de conteneur, comme par exemple dans les scénarios de mise à niveau. Toutefois, si ces volumes sont laissés inutilisés, cela peut entraîner un épuisement de l’espace disque et des erreurs système ultérieures. Si vous utilisez des volumes Docker dans votre scénario, nous vous encourageons à utiliser des outils Docker tels que docker volume prune et docker volume rm pour supprimer les volumes inutilisés, en particulier pour les scénarios de production.
- Utiliser montage de volume :
Configurez les propriétés deviceToCloudUploadProperties et deviceAutoDeleteProperties de votre module en ajoutant le code JSON suivant au fichier deployment.template.json. Configurez chaque propriété avec une valeur appropriée et enregistrez le fichier. Si vous utilisez le simulateur IoT Edge, définissez les valeurs sur les variables d’environnement associées pour ces propriétés, que vous trouverez dans la section Explication de deviceToCloudUploadProperties et 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> } } }
Pour plus d’informations sur la configuration de deviceToCloudUploadProperties et deviceAutoDeleteProperties une fois votre module déployé, consultez Modifier le jumeau de module. Pour plus d’informations sur les options de création de conteneur, la stratégie de redémarrage et l’état souhaité, consultez Propriétés souhaitées pour EdgeAgent.
Enregistrez le fichier deployment.template.json.
Cliquez avec le bouton droit sur deployment.template.json et sélectionnez Générer le manifeste de déploiement IoT Edge.
Visual Studio Code récupère les informations que vous avez fournies dans le fichier deployment.template.json et les utilise pour créer un fichier manifeste de déploiement. Le manifeste de déploiement est créé dans un nouveau dossier config dans l’espace de travail de votre solution. Une fois que vous disposez de ce fichier, vous pouvez suivre les étapes décrites dans Déployer des modules Azure IoT Edge avec Azure CLI 2.0.
Déployer plusieurs instances de module
Si vous souhaitez déployer plusieurs instances du module de stockage Blob Azure sur IoT Edge, indiquez un chemin d’accès de stockage différent et modifiez la valeur HostPort
à laquelle le module est lié. Les modules de stockage d’objets blob exposent toujours le port 11002 dans le conteneur, mais vous pouvez déclarer le port auquel il est lié sur l’hôte.
Modifiez les Options de création de conteneur (dans le Portail Azure) ou le champ createOptions champ (dans le fichier deployment.template.json dans Visual Studio Code) pour changer la valeur HostPort
:
"PortBindings":{
"11002/tcp": [{"HostPort":"<port number>"}]
}
Lorsque vous vous connectez à des modules de stockage d’objets blob supplémentaires, modifiez le point de terminaison pour qu’il pointe vers le port hôte mis à jour.
Configurer une prise en charge de proxy
Si votre organisation utilise un serveur proxy, vous devez configurer la prise en charge du proxy pour les modules de runtime edgeAgent et edgeHub. Ce processus implique deux tâches :
- Configurer les démons du Runtime et l’agent IoT Edge sur l’appareil.
- Définir la variable d’environnement HTTPS_PROXY pour les modules dans le fichier JSON du manifeste de déploiement.
Ce processus est décrit dans Configurer un appareil IoT Edge pour communiquer via un serveur proxy.
En outre, un module de stockage d’objets BLOB requiert également le paramètre HTTPS_PROXY dans le fichier de déploiement du manifeste. Vous pouvez modifier directement le fichier manifeste de déploiement ou utiliser le portail Azure.
Accédez à votre IoT Hub dans le Portail Azure, puis sélectionnez Appareils sous le menu Gestion des périphériques
Sélectionnez l’appareil avec le module à configurer.
Sélectionnez Définir modules.
Dans la section Modules IoT Edge de la page, sélectionnez le module de stockage d’objets BLOB.
Sur la page Mettre à jour le module IoT Edge, sélectionnez l’onglet Variables d’environnement.
Ajoutez
HTTPS_PROXY
pour le Nom et votre URL de proxy pour la Valeur.Sélectionnez Mettre à jour, puis Vérifier + créer.
Notez que le proxy est ajouté au module dans le manifeste de déploiement, et sélectionnez Créer.
Vérifiez le paramètre en sélectionnant le module à partir de la page Détails de l’appareil, puis dans la partie inférieure de la page Détails des modules IoT Edge sélectionnez l’onglet Variables d’environnement.
Étapes suivantes
En savoir plus sur le stockage Blob Azure sur IoT Edge.
Pour plus d’informations sur le fonctionnement et la création des manifestes de déploiement, consultez Comprendre comment les modules IoT Edge peuvent être utilisés, configurés et réutilisés.