Importieren von Updates in Device Update für IoT Hub
Wenn Sie ein Update aus Device Update für IoT Hub auf Geräten bereitstellen möchten, müssen Sie es zuerst in den Device Update-Dienst importieren. Dieser Artikel bietet eine Übersicht über einige wichtige Konzepte, die Sie beim Importieren von Updates verstehen müssen.
Importmanifest
Ein Importmanifest ist eine JSON-Datei, die wichtige Informationen zu dem gerade importierten Update definiert. Sie übermitteln sowohl Ihr Importmanifest als auch die zugeordneten Updatedateien (z. B. ein Firmwareupdate-Paket) im Rahmen des Importvorgangs. Die im Importmanifest definierten Metadaten werden zum Erfassen des Updates verwendet. Einige der Metadaten werden auch zum Zeitpunkt der Bereitstellung verwendet – beispielsweise zur Überprüfung, ob ein Update richtig installiert wurde.
Beispiel:
{
"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"
}
Das Importmanifest enthält mehrere Elemente, die ein wichtiges Device Update for IoT Hub-Konzepte darstellen. Diese Elemente werden in diesem Abschnitt erläutert. Informationen zum vollständigen Importschema finden Sie im JSON-Schema des Importmanifests.
Update-Identität
Die Update-Identität (updateId) ist der eindeutige Bezeichner für ein Update in Device Update for IoT Hub. Sie besteht aus drei Teilen:
- Anbieter: Entität, die das Update erstellt oder direkt verantwortlich für dieses ist. Oft ist dies ein Firmenname.
- Name: Bezeichner für eine Klasse von Updates. Dies ist oft eine Geräteklasse oder ein Modellname.
- Version: Versionsnummer, die dieses Update von anderen mit demselben Anbieter und Namen unterscheidet.
Beispiel:
{
"updateId": {
"provider": "Contoso",
"name": "Toaster",
"version": "1.0"
}
}
Hinweis
updateId wird nur vom Device Update for IoT Hub-Dienst verwendet und kann sich von der Identität der tatsächlichen Softwarekomponente auf dem Gerät unterscheiden.
Kompatibilität
Die Kompatibilität definiert die Kriterien eines Geräts, auf dem das Update installiert werden kann. Sie enthält Geräteeigenschaften, die eine Menge beliebiger Schlüssel-Wert-Paare sind, die von einem Gerät gemeldet werden. Nur Geräte mit übereinstimmenden Eigenschaften werden in die Bereitstellung einbezogen. Ein Update kann mit mehreren Geräteklassen kompatibel sein, wenn es mehrere Sätze von Geräteeigenschaften umfasst.
Hier ist ein Beispiel für ein Update, das nur auf einem Gerät bereitgestellt werden kann, das Contoso und Toaster als Gerätehersteller und Modell meldet.
{
"compatibility": [
{
"deviceManufacturer": "Contoso",
"deviceModel": "Toaster"
}
]
}
Anweisungen
Der Teil Anweisungen enthält die erforderlichen Informationen oder Schritte, damit der Geräte-Agent das Update installieren kann. Das einfachste Update enthält nur einen einzelnen Inlineschritt. In diesem Schritt wird die enthaltene Nutzdatendatei mithilfe eines Handlers ausgeführt, der beim Geräte-Agent registriert ist:
{
"instructions": {
"steps": [
{
"handler": "microsoft/swupdate:1",
"files": [
"contoso.toaster.1.0.swu"
]
}
]
}
}
Tipp
handler
entspricht in Importmanifestversion 3.0 oder früher updateType
.
Ein Update kann mehrere Schritte umfassen:
{
"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"
]
}
]
}
}
Ein Update kann Referenzschritte enthalten, die den Geräte-Agent anweisen, ein weiteres Update mit einem eigenen Importmanifest zu installieren und eine Beziehung zwischen über- und untergeordneten Updates zu erstellen. Beispielsweise kann ein Update für einen Toaster zwei untergeordnete Updates enthalten:
{
"instructions": {
"steps": [
{
"type": "reference",
"updateId": {
"provider": "Contoso",
"name": "Toaster.HeatingElement",
"version": "1.0"
}
},
{
"type": "reference",
"updateId": {
"provider": "Contoso",
"name": "Toaster.Sensors",
"version": "1.0"
}
}
]
}
}
Hinweis
Ein Update kann eine beliebige Kombination aus Inline- und Referenzschritten enthalten.
Dateien
Der Teil Dateien enthält die Metadaten der Nutzdatendateien des Updates wie Namen, Größen und Hashwerte. Device Update for IoT Hub verwendet diese Metadaten für die Integritätsprüfung während des Importvorgangs. Die gleichen Informationen werden dann an den Geräte-Agent weitergeleitet, um die Integritätsprüfung vor der Installation zu wiederholen.
Hinweis
Ein Update, das nur Referenzschritte umfasst, enthält keine Nutzdatendatei für das Update im übergeordneten Update.
Erstellen eines Importmanifests
Sie können einen beliebigen Text-Editor verwenden, um eine Importmanifestdatei im JSON-Format zu erstellen. Es gibt auch Beispielskripts für das programmgesteuerte Erstellen eines Importmanifests in Azure/iot-hub-device-update auf GitHub.
Wichtig
Der JSON-Dateiname des Importmanifests muss auf .importmanifest.json
enden, wenn er über das Azure-Portal importiert wird.
Tipp
Verwenden Sie Visual Studio Code, um AutoVervollständigen und die JSON-Schemavalidierung beim Erstellen eines Importmanifests zu aktivieren.
Grenzwerte für den Import von Updates
Für jede Device Update for IoT Hub-Instanz werden bestimmte Grenzwerte erzwungen. Wenn Sie diese noch nicht überprüft haben, lesen Sie Grenzwerte für Device Update.
Nächste Schritte
- Weitere Informationen zum Importvorgang finden Sie unter Vorbereiten eines zu importierenden Updates.
- Sehen Sie sich das Schema des Importmanifests an.