Импорт обновлений в службу "Обновление устройств для Центра Интернета вещей"

Чтобы развернуть обновление на устройствах из службы "Обновление устройств для Центра Интернета вещей", необходимо сначала импортировать это обновление в службу "Обновление устройств". Импортированное обновление будет храниться в службе обновления устройств и может быть развернуто на устройствах. В этой статье приведен обзор некоторых важных понятий, которые необходимо учитывать при импорте обновлений.

Импорт манифеста

Манифест импорта — это файл JSON, который определяет важные сведения об импортируемом обновлении. В процессе импорта будет отправлен как манифест импорта, так и связанный файл или файлы обновления (например, пакет обновления встроенного ПО). Метаданные, определенные в манифесте импорта, используются для приема обновления. Некоторые метаданные также используются во время развертывания, например, чтобы проверить, было ли обновление установлено должным образом.

Пример:

{
  "updateId": {
    "provider": "Contoso",
    "name": "Toaster",
    "version": "1.0"
  },
  "isDeployable": false,
  "compatibility": [
    {
      "manufacturer": "Contoso",
      "model": "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": "5.0"
}

Манифест импорта содержит несколько элементов, которые представляют собой важные понятия службы "Обновление устройств для Центра Интернета вещей". Эти элементы описаны в этом разделе. Сведения о полной схеме импорта см. в статье Импорт схемы JSON манифеста.

Идентификатор обновления

Идентификатор обновления или updateId — это уникальный идентификатор обновления в службе "Обновление устройств для Центра Интернета вещей". Он состоит из трех частей:

  • Поставщик — сущность, которая создает обновление или несет за него ответственность. Как правило, это название компании.
  • Имя — идентификатор класса обновлений. Как правило, это класс устройства или имя модели.
  • Версия — номер версии, отличающий это обновление от других обновлений с тем же значением поставщика и имени.

Пример:

{
  "updateId": {
    "provider": "Contoso",
    "name": "Toaster",
    "version": "1.0"
  }
}

Примечание

UpdateId используется только в службе "Обновление устройств" и может отличаться от идентификаторов для реальных компонентов программного обеспечения на устройстве.

Совместимость

Совместимость определяет критерии для устройства, которое может установить обновление. Здесь указаны свойства устройства, состоящие из набора произвольных пар "ключ — значение", сообщаемых с устройства. Только устройства с соответствующими свойствами будут доступны для развертывания. Обновление может быть совместимо с несколькими классами устройств, если в нем есть несколько наборов свойств устройства.

Ниже приведен пример обновления, которое можно развернуть только на устройстве с именем производителя Contoso и именем модели Toaster.

{
  "compatibility": [
    {
      "manufacturer": "Contoso",
      "model": "Toaster"
    }
  ]
}

Инструкции

В разделе Инструкции содержатся необходимые сведения или шаги для установки обновления агентом устройства. Простейшее обновление содержит один встроенный шаг. Этот шаг выполняет предоставленный файл полезных данных с помощью обработчика, зарегистрированного в агенте устройства:

{
  "instructions": {
    "steps": [
      {
        "handler": "microsoft/swupdate:1",
        "files": [
          "contoso.toaster.1.0.swu"
        ]
      }
    ]
  }
}

Совет

handler эквивалентно updateType в файле манифеста импорта версии 3.0 или более ранней.

Обновление может содержать более одного шага:

{
  "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"
        ]
      }
    ]
  }
}

Обновление может содержать ссылочные шаги, которые поручают агенту устройства установить другое обновление с отдельным манифестом импорта, что создает отношения родительского и дочернего обновлений. Например, обновление для устройства Toaster может содержать два дочерних обновления:

{
  "instructions": {
    "steps": [
      {
        "type": "reference",
        "updateId": {
          "provider": "Contoso",
          "name": "Toaster.HeatingElement",
          "version": "1.0"
        }
      },
      {
        "type": "reference",
        "updateId": {
          "provider": "Contoso",
          "name": "Toaster.Sensors",
          "version": "1.0"
        }
      }
    ]
  }
}

Примечание

Обновление может содержать любое сочетание встроенных и ссылочных шагов.

Файлы

Раздел Files содержит метаданные для файлов полезной нагрузки обновления, например имена, размеры и хэш-коды. Служба "Обновление устройств для Центра Интернета вещей" использует эти метаданные для проверки целостности в процессе импорта. Эта же информация передается агенту устройства, чтобы повторно выполнить проверку целостности перед установкой.

Примечание

Если обновление содержит только ссылочные шаги, в таком родительском обновлении не будет файлов полезных данных обновления.

Создание манифеста импорта

Хотя можно создать манифест импорта JSON вручную с помощью текстового редактора, интерфейс командной строки Azure (CLI) значительно упрощает этот процесс. Когда вы будете готовы опробовать создание манифеста импорта, воспользуйтесь практическим руководством.

Важно!

Имя JSON-файла с манифестом импорта должно завершаться строкой .importmanifest.json, если он импортирован через портал Azure.

Совет

Используйте Visual Studio Code, чтобы включить автозаполнение и проверку схемы JSON при создании манифеста импорта.

Ограничения на импорт обновлений

Для каждого экземпляра службы "Обновление устройств для Центра Интернета вещей" применяются определенные ограничения. Если вы еще не знакомы с ними, изучите статью Ограничения на обновление устройств.

Дальнейшие действия