Поделиться через


Разверните модуль Azure Blob Storage на IoT Edge на вашем устройстве.

Область применения:Флажок IoT Edge 1.5 IoT Edge 1.5

Внимание

IoT Edge 1.5 LTS является поддерживаемым выпуском. IoT Edge 1.4 LTS прекращает поддержку с 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.

Существует несколько способов развертывания модулей на устройстве IoT Edge, и все они подходят для Хранилища BLOB-объектов Azure на модулях IoT Edge. Два простейших метода — это портал Azure или шаблоны Visual Studio Code.

Предварительные условия

Развертывание на портале Azure

Портал Azure поможет вам создать манифест развертывания и отправить это развертывание на устройство IoT Edge.

Выбор устройства

  1. Войдите на портал Azure и перейдите к своему Центру Интернета вещей.
  2. Выберите устройства в меню управления устройствами .
  3. Выберите целевое устройство IoT Edge из списка.
  4. Щелкните Set Modules (Настроить модули).

Настройка манифеста развертывания

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

Добавление модулей

  1. В разделе "Модули IoT Edge" на странице выберите раскрывающийся список "Добавить" и выберите модуль IoT Edge, чтобы отобразить страницу "Добавить модуль IoT Edge".

  2. На вкладке "Параметры " укажите имя модуля и укажите универсальный код ресурса (URI) образа контейнера:

    • Имя модуля IoT Edge: azureblobstorageoniotedge
    • URI образа: mcr.microsoft.com/azure-blob-storage:latest

    Снимок экрана: вкладка

    Не нажимайте кнопку Добавить, пока не укажете значения на вкладках Параметры модуля, Параметры создания контейнера и Параметры двойника модуля, как описано в этой процедуре.

    Внимание

    Azure IoT Edge учитывает регистр при вызове модулей, а Storage SDK по умолчанию преобразовывается в нижний регистр. Изменение имени на строчные буквы помогает убедиться, что подключения к хранилищу блобов Azure на модуле IoT Edge не прерываются.

  3. Откройте вкладку Параметры создания контейнера.

  4. Скопируйте и вставьте следующий код 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"}]
        }
      }
    }
    

    Снимок экрана: вкладка

  5. Измените JSON, скопированный в Параметры создания контейнера, следующим образом:

    • Замените <local storage account name> запоминаемым именем. Имена учетных записей должны содержать от 3 до 24 знаков — строчных букв и цифр. Пробелы отсутствуют.

    • Замените <local storage account key> на 64-байтовый ключ Base64. Ключ можно создать с помощью таких средств, как Генератор Base64. Эти учетные данные используются для доступа к хранилищу BLOB-объектов из других модулей.

    • Замените <mount> в соответствии с операционной системой контейнера. Укажите имя тома , или абсолютный путь к существующему каталогу на вашем устройстве IoT Edge, где модуль для работы с BLOB-объектами хранит свои данные. Привязка каталога хранения сопоставляет указанное вами расположение на устройстве с заранее определённым местом в модуле.

    Для контейнеров Linux формат следующий: <путь к хранилищу или том>:/blobroot. Например:

    Внимание

    • Не изменяйте вторую половину значения точки монтирования хранилища, которая указывает на определенное расположение в хранилище BLOB на модуле IoT Edge. Подключение хранилища всегда должно заканчиваться :/blobroot для контейнеров Linux.

    • IoT Edge не удаляет тома, подключенные к контейнерам модулей. Это поведение реализовано намеренно, так как оно позволяет сохранять данные в экземплярах контейнеров, например в сценариях обновления. Однако если эти тома не используются, это может привести к нехватке места на диске и последующим системным ошибкам. Если в вашем сценарии используются тома docker, мы рекомендуем использовать такие инструменты docker, как docker volume prune и docker volume rm, чтобы удалить неиспользуемые тома, особенно для производственных сценариев.

  6. Скопируйте следующий код JSON и вставьте его в поле на вкладке Параметры двойника модуля.

    {
      "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>
      }
    }
    
  7. Присвойте каждому свойству соответствующее значение, как указано заполнителями. Если вы используете симулятор IoT Edge, задайте значения соответствующим переменным среды для этих свойств, как описано deviceToCloudUploadProperties и deviceAutoDeleteProperties.

    Совет

    Имя вашего target контейнера имеет ограничения именования; например, использование $ префикса не поддерживается. Чтобы просмотреть все ограничения, просмотрите имена контейнеров.

    Примечание.

    Если целевой объект контейнера не именован или имеет значение NULL storageContainersForUpload, имя по умолчанию будет назначено целевому объекту. Если вы хотите прекратить загрузку в контейнер, его необходимо полностью удалить из storageContainersForUpload. Дополнительные сведения см. в разделе Хранение данных на границе с использованием Azure Blob Storage на IoT Edge.

    Снимок экрана: вкладка

    Сведения о настройке deviceToCloudUploadProperties и deviceAutoDeleteProperties после развертывания модуля см. в разделе "Изменение двойника модуля". Дополнительные сведения о требуемых свойствах см. в разделе Определение или обновление требуемых свойств.

  8. Выберите Добавить.

  9. Нажмите Далее: Маршруты, чтобы перейти в раздел маршрутов.

Настройка маршрутов

Сохраните маршруты по умолчанию и нажмите кнопку Далее: просмотр и создание, чтобы перейти к разделу проверки.

Проверка развертывания

В разделе обзорной информации вы увидите манифест развертывания в формате JSON, который был создан на основе параметров, выбранных вами в двух предыдущих разделах. Здесь также объявлены два дополнительных модуля, которые вы не добавляли: $edgeAgent и $edgeHub. Эти два модуля составляют среду выполнения IoT Edge и являются обязательными для каждого развертывания.

Просмотрите сведения о развертывании, а затем нажмите Создать.

Проверьте ваше развертывание

После создания развертывания вы возвращаетесь на страницу "Устройства" вашего центра Интернета вещей.

  1. Выберите устройство IoT Edge, на которое вы нацелили развертывание, чтобы открыть его детали.
  2. В сведениях об устройстве убедитесь, что модуль хранения Blob указан как Указано в развертывании и Сообщено устройством.

Запуск модуля на устройстве может занять несколько секунд. Затем информация о нем будет передана в Центр Интернета вещей. Обновите страницу, чтобы увидеть обновленное состояние.

Развертывание из Visual Studio Code

Azure IoT Edge предоставляет шаблоны в Visual Studio Code для разработки решений для периферии. Выполните следующие действия для создания нового решения IoT Edge с модулем хранилища BLOB-объектов и настройки манифеста развертывания.

Внимание

Расширение Visual Studio Code Azure IoT Edge находится в режиме обслуживания.

  1. Выберите Вид>Палитра команд.

  2. В палитре команд введите и выполните команду Azure IoT Edge: New IoT Edge solution.

    Снимок экрана: запуск нового решения IoT Edge.

    Следуйте инструкциям на экране в палитре команд для создания решения.

    Поле значение
    Выбрать папку Выберите расположение на вашей машине для разработки, чтобы Visual Studio Code создал файлы проекта.
    Введите название решения. Введите описательное имя решения или примите имя по умолчанию EdgeSolution.
    Выбор шаблона модуля Выберите Existing Module (Enter full image URL) (Имеющийся модуль (введите полный URL-адрес образа)).
    Указание имени модуля Введите имя модуля, используя знаки нижнего регистра, например azureblobstorageoniotedge.

    Важно использовать имя в нижнем регистре для хранилища Blob Azure в модуле IoT Edge. IoT Edge чувствителен к регистру при обращении к модулям, а название SDK службы хранилища по умолчанию преобразуется в нижний регистр.
    Предоставить образ Docker для модуля Укажите URI образа: mcr.microsoft.com/azure-blob-storage:latest.

    Visual Studio Code принимает предоставленные сведения, создает решение IoT Edge, а затем загружает его в новом окне. Шаблон решения создает шаблон манифеста развертывания, который содержит образ модуля хранилища блобов. Вам нужно настроить параметры создания модуля.

  3. Откройте deployment.template.json в рабочей области нового решения и найдите раздел modules. Внесите следующие изменения конфигурации.

    1. Скопируйте и вставьте следующий код в поле createOptions для модуля хранения 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"}]
        }
      }
      

      Снимок экрана: обновление модуля createOptions в Visual Studio Code.

  4. Замените <local storage account name> запоминаемым именем. Имена учетных записей должны иметь длину от 3 до 24 символов и включать строчные буквы и цифры. Пробелы отсутствуют.

  5. Замените <local storage account key> на 64-байтовый ключ Base64. Ключ можно создать с помощью таких средств, как Генератор Base64. Вы используете эти учетные данные для доступа к хранилищу BLOB-объектов из других модулей.

  6. Замените <mount> в соответствии с операционной системой контейнера. Укажите имя тома или абсолютный путь к папке на устройстве IoT Edge, где модуль BLOB должен хранить данные. Монтирование хранилища сопоставляет указанное вами расположение на устройстве с установленным расположением в модуле.

    Для контейнеров Linux формат — это <путь к хранилищу или том>:/blobroot. Например:

    Внимание

    • Не изменяйте вторую часть значения монтирования хранилища, которая указывает на определенное расположение в хранилище BLOB-объектов в модуле IoT Edge. Подключение хранилища всегда должно заканчиваться :/blobroot для контейнеров Linux.

    • IoT Edge не удаляет тома, подключенные к контейнерам модулей. Это поведение реализовано намеренно, так как оно позволяет сохранять данные в экземплярах контейнеров, например в сценариях обновления. Однако если эти тома не используются, это может привести к нехватке места на диске и последующим системным ошибкам. Если в сценарии используются тома docker, рекомендуется использовать такие средства docker, как docker volume prune и docker volume rm , чтобы удалить неиспользуемые тома, особенно для рабочих сценариев.

  7. Настройте параметры deviceToCloudUploadProperties и deviceAutoDeleteProperties для модуля, добавив следующий код JSON в файл deployment.template.json. Присвойте каждому свойству соответствующее значение и сохраните файл. Если вы используете симулятор IoT Edge, задайте значения соответствующим переменным среды для этих свойств, которые можно найти в разделе объяснений deviceToCloudUploadProperties и 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>
        }
      }
    }
    

    Снимок экрана: задание требуемых свойств для azureblobstorageoniotedge в Visual Studio Code.

    Сведения о настройке deviceToCloudUploadProperties и deviceAutoDeleteProperties после развертывания модуля см. в разделе "Изменение двойника модуля". Дополнительные сведения о возможностях при создании контейнера, политике перезапуска и требуемом состоянии см. в разделе Требуемые свойства EdgeAgent.

  8. Сохраните файл deployment.template.json.

  9. Щелкните правой кнопкой мыши deployment.template.json и выберите Создать манифест развертывания IoT Edge.

  10. Visual Studio Code принимает данные из файла deployment.template.json и использует их для создания файла манифеста развертывания. Манифест развертывания создается в новой папке config в рабочей области решения. После получения этого файла можно выполнить действия, описанные в разделе "Развертывание модулей Azure IoT Edge с помощью Azure CLI 2.0".

Развертывание нескольких экземпляров модуля

Если вы хотите развернуть несколько экземпляров Хранилища BLOB-объектов Azure в модуле IoT Edge, необходимо указать другой путь к хранилищу и изменить значение HostPort, к которому привязан модуль. Модули BLOB-хранилища всегда предоставляют порт 11002 в контейнере, но вы можете объявить, к какому порту он привязан в хосте.

Чтобы изменить значение , измените Параметры создания контейнера (на портале Azure) или поле createOptions (в файле HostPort в Visual Studio Code).

"PortBindings":{
  "11002/tcp": [{"HostPort":"<port number>"}]
}

При подключении к дополнительным модулям блочного хранилища измените конечную точку, чтобы она указывала на обновленный порт хоста.

Настройка поддержки прокси-сервера

Если ваша организация использует прокси-сервер, необходимо настроить поддержку прокси-сервера для модулей среды выполнения edgeAgent и edgeHub. Этот процесс включает следующие две задачи.

  • Настройка управляющих программ среды выполнения и агента IoT Edge на устройстве.
  • Настройка переменной среды HTTPS_PROXY для модулей в JSON-файле манифеста развертывания.

Этот процесс описан в статье Настройка устройства IoT Edge для обмена данными через прокси-сервер.

Кроме того, для модуля хранилища blob-объектов также требуется параметр HTTPS_PROXY в файле развертывания манифеста. Вы можете непосредственно изменить файл манифеста развертывания или воспользоваться порталом Azure.

  1. Перейдите к Центр Интернета вещей в портал Azure и выберите "Устройства" в меню "Управление устройствами"

  2. Выберите устройство с модулем для настройки.

  3. Щелкните Set Modules (Настроить модули).

  4. На странице в разделе Модули IoT Edge выберите модуль блоб-хранилища.

  5. На странице Обновление модуля IoT Edge перейдите на вкладку Переменные среды.

  6. Укажите HTTPS_PROXY в качестве имени и URL-адрес прокси-сервера в качестве значения.

    Снимок экрана: панель

  7. Выберите Обновить, затем Проверить и создать.

  8. См. сведения о добавлении прокси-сервера в модуль в манифесте развертывания и нажмите кнопку "Создать".

  9. Проверьте настройки, выбрав модуль на странице сведений об устройстве, а затем в нижней части страницы Сведения о модулях IoT Edge перейдите на вкладку Переменные среды.

    Снимок экрана: вкладка

Следующие шаги

Узнать больше о Azure Blob Storage на IoT Edge.

Дополнительные сведения о работе манифестов развертывания и об их создании см. в руководстве по использованию, настройке и повторном использовании модулей Azure IoT Edge.