Importation de mises à jour dans Device Update pour IoT Hub
Pour déployer une mise à jour sur des appareils à partir de Device Update pour IoT Hub, vous devez d’abord importer cette mise à jour dans le service Device Update. Cet article propose une vue d’ensemble de certains concepts importants à comprendre en ce qui concerne l’importation de mises à jour.
Manifeste d’importation
Un manifeste d’importation est un fichier JSON qui définit des informations importantes sur la mise à jour que vous importez. Vous soumettez à la fois votre manifeste d’importation et le ou les fichiers de mise à jour associés (par exemple, un package de mise à jour de microprogramme) dans le cadre du processus d’importation. Les métadonnées définies dans ce manifeste d’importation sont utilisées pour l’ingestion de la mise à jour. Certaines métadonnées sont également utilisées au moment du déploiement, par exemple, pour vérifier si une mise à jour a été correctement installée.
Par exemple :
{
"updateId": {
"provider": "Contoso",
"name": "Toaster",
"version": "1.0"
},
"isDeployable": false,
"compatibility": [
{
"deviceManufacturer": "Contoso",
"deviceModel": "Toaster"
}
],
"instructions": {
"steps": [
{
"handler": "microsoft/swupdate:1",
"files": [
"firmware.swu"
],
"handlerProperties": {
"installedCriteria": "1.0"
}
}
]
},
"files": [
{
"filename": "firmware.swu",
"sizeInBytes": 7558,
"hashes": {
"sha256": "/CD7Sn6fiknWa3NgcFjGlJ+ccA81s1QAXX4oo5GHiFA="
}
}
],
"createdDateTime": "2022-01-19T06:23:52.6996916Z",
"manifestVersion": "4.0"
}
Le manifeste d’importation contient plusieurs éléments qui représentent des concepts importants de Device Update pour IoT Hub. Ces éléments sont décrits dans cette section. Pour plus d’informations sur le schéma d’importation complet, consultez Schéma JSON du manifeste d’importation.
Identité de la mise à jour
L’élément update identity ou updateId correspond à l’identificateur unique dd'une mise à jour dans Device Update pour IoT Hub. Cet identificateur se compose de trois parties :
- Fournisseur : entité qui crée ou qui est directement responsable de la mise à jour. Souvent, il s’agit d’un nom d’entreprise.
- Nom : identificateur d’une classe de mises à jour. Il s’agit souvent d’un nom de classe ou de modèle d’appareil.
- Version : numéro de version permettant de différencier cette mise à jour d’autres mises à jour ayant le même fournisseur et le même nom.
Par exemple :
{
"updateId": {
"provider": "Contoso",
"name": "Toaster",
"version": "1.0"
}
}
Notes
UpdateId est uniquement utilisé par le service Device Update et peut être différent des identités du composant logiciel installé sur l’appareil.
Compatibilité
La partie compatibility définit les critères que doit remplir un appareil pour installer la mise à jour. Elle contient des propriétés d’appareil correspondant à un ensemble de paires clé-valeur arbitraires qui sont signalées à partir d’un appareil. Seuls les appareils avec les propriétés correspondantes sont éligibles pour le déploiement. Une mise à jour peut être compatible avec plusieurs classes d’appareils si elle propose plusieurs ensembles de propriétés d’appareil.
Voici un exemple de mise à jour qui ne peut être déployée que sur un appareil qui signale Contoso et Toaster comme fabricant et modèle d’appareil.
{
"compatibility": [
{
"deviceManufacturer": "Contoso",
"deviceModel": "Toaster"
}
]
}
Instructions
La partie instructions contient les informations ou les étapes (steps) dont a besoin l’agent de l’appareil pour installer la mise à jour. La mise à jour la plus simple contient une seule étape inlined. Cette étape exécute le fichier de charge utile inclus avec un gestionnaire (handler) inscrit auprès de l’agent de l’appareil :
{
"instructions": {
"steps": [
{
"handler": "microsoft/swupdate:1",
"files": [
"contoso.toaster.1.0.swu"
]
}
]
}
}
Conseil
handler
équivaut à updateType
dans le manifeste d’importation version 3.0 ou ultérieure.
Une mise à jour peut contenir plusieurs étapes :
{
"instructions": {
"steps": [
{
"description": "pre-install script",
"handler": "microsoft/script:1",
"handlerProperties": {
"arguments": "--pre-install"
},
"files": [
"configure.sh"
]
},
{
"description": "firmware package",
"handler": "microsoft/swupdate:1",
"files": [
"contoso.toaster.1.0.swu"
]
}
]
}
}
Une mise à jour peut contenir une étape de référence (reference) qui indique à l’agent de l’appareil d’installer une autre mise à jour avec son propre manifeste d’importation, établissant ainsi une relation de mise à jour parent et enfant. Par exemple, une mise à jour pour un toaster peut contenir deux mises à jour enfants :
{
"instructions": {
"steps": [
{
"type": "reference",
"updateId": {
"provider": "Contoso",
"name": "Toaster.HeatingElement",
"version": "1.0"
}
},
{
"type": "reference",
"updateId": {
"provider": "Contoso",
"name": "Toaster.Sensors",
"version": "1.0"
}
}
]
}
}
Notes
Une mise à jour peut contenir n’importe quelle combinaison d’étapes inlined et de référence.
Fichiers
La partie files contient les métadonnées des fichiers de charge utile de la mise à jour (nom, taille, hachage, etc.). Device Update pour IoT Hub utilise ces métadonnées pour valider l’intégrité lors du processus d’importation. Les mêmes informations sont ensuite transférées à l’agent de l’appareil pour répéter la validation de l’intégrité avant l’installation.
Notes
Une mise à jour qui contient uniquement des étapes de référence uniquement n’aura aucun fichier de charge utile de mise à jour dans la mise à jour parente.
Créer un manifeste d’importation
Vous pouvez utiliser n’importe quel éditeur de texte pour créer un fichier JSON de manifeste d’importation. Vous trouverez également des exemples de script permettant de créer un manifeste d’importation par programmation dans Azure/iot-hub-device-update sur GitHub.
Important
Le nom de fichier JSON du manifeste d’importation doit se terminer par .importmanifest.json
s’il est importé par le biais du portail Azure.
Conseil
Utilisez Visual Studio Code pour activer l’autocomplétion et la validation du schéma JSON lors de la création d’un manifeste d’importation.
Limites sur l’importation des mises à jour
Certaines limites sont appliquées pour chaque instance Device Update pour IoT Hub. Si vous ne l’avez pas déjà fait, consultez Limites de Device Update.
Étapes suivantes
- Pour en savoir plus sur le processus d’importation, consultez Préparer l’importation d’une mise à jour.
- Passez en revue le schéma de manifeste d’importation.