Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
IoT Edge 1.5
Внимание
IoT Edge 1.5 LTS является поддерживаемым выпуском. IoT Edge 1.4 LTS заканчивается жизнью с 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.
В этой статье показано, как использовать Visual Studio 2022 для разработки, отладки и развертывания пользовательских модулей Azure IoT Edge. Visual Studio 2022 предоставляет шаблоны для модулей IoT Edge, написанных на C и C#. Поддерживаемые архитектуры устройств включают Windows x64, Linux x64, ARM32 и ARM64 (предварительная версия). Дополнительные сведения о поддерживаемых операционных системах, языках и архитектурах см. в разделе Поддержка языков и архитектур.
В этой статье приведены шаги для двух средств разработки IoT Edge:
- Интерфейс командной строки (CLI), предпочтительный инструмент для разработки
- Средства Azure IoT Edge для расширения Visual Studio (в режиме обслуживания)
Нажмите кнопку селектора инструментов в начале, чтобы выбрать вариант средства для этой статьи. Оба средства предоставляют следующие преимущества:
- создание, изменение, сборку, запуск и отладку решений и модулей IoT Edge на локальном компьютере для разработки;
- Закодируйте модули Интернета вещей Azure в C или C# с помощью преимуществ разработки Visual Studio.
- Разверните решение IoT Edge на устройстве IoT Edge через Центр Интернета вещей Azure.
Необходимые компоненты
В этой статье предполагается, что для разработки вы используете компьютер под управлением Windows.
Установите или измените Visual Studio 2022 на компьютере разработки. Выберите варианты разработки и разработки классических приложений Azure с помощью рабочих нагрузок C++.
Скачайте и установите средства Azure IoT Edge из Visual Studio Marketplace. Используйте расширение средств Azure IoT Edge, чтобы создавать и разрабатывать решение IoT Edge. Предпочтительное средство разработки — это средство разработки Azure IoT Edge в командной строке (CLI). Расширение включает шаблоны проектов Azure IoT Edge, используемые для создания проекта Visual Studio. Необходимо установить расширение независимо от используемого средства разработки.
Внимание
Расширение Средств Azure IoT Edge для VS 2022 находится в режиме обслуживания. Предпочтительное средство разработки — это средство разработки Azure IoT Edge в командной строке (CLI).
Совет
Если вы используете Visual Studio 2019, скачайте и установите средства Azure IoT Edge для VS 2019 из Visual Studio Marketplace.
Установка диспетчера библиотек Vcpkg
git clone https://github.com/Microsoft/vcpkg cd vcpkg bootstrap-vcpkg.batУстановка пакета azure-iot-sdk-c для Windows
vcpkg.exe install azure-iot-sdk-c:x64-windows vcpkg.exe --triplet x64-windows integrate installСкачайте и установите совместимую систему управления контейнерами Docker на компьютере разработки, чтобы создать и запустить образы модулей. Например, установите Docker Community Edition.
Для разработки модулей с контейнерами Linux используйте компьютер Windows, соответствующий требованиям для Docker Desktop.
Создайте Реестр контейнеров Azure или Центр Docker для хранения образов модулей.
Совет
Используйте локальный реестр Docker для создания прототипов и тестирования вместо облачного реестра.
Установите интерфейс командной строки Azure.
Чтобы протестировать модуль на устройстве, необходимо активное Центр Интернета вещей с по крайней мере одним устройством IoT Edge. Чтобы создать устройство IoT Edge для тестирования, создайте его на портале Azure или с помощью интерфейса командной строки:
Создание на портале Azure — самый быстрый способ. На портале Azure перейдите к ресурсу Центра Интернета вещей. Выберите устройства в меню "Управление устройствами ", а затем нажмите кнопку "Добавить устройство".
В разделе "Создание устройства" назовите устройство с помощью идентификатора устройства, установите флажок "Устройство IoT Edge", а затем нажмите кнопку "Сохранить " в левом нижнем левом слева.
Убедитесь, что новое устройство существует в Центре Интернета вещей в меню "Устройства управления устройствами>". Дополнительные сведения о создании устройства IoT Edge на портале Azure см. в статье "Создание и подготовка устройства IoT Edge в Linux с помощью симметричного ключа".
Чтобы создать устройство IoT Edge с помощью интерфейса командной строки, выполните действия, описанные в кратком руководстве по Linux или Windows. В процессе регистрации устройства IoT Edge создается устройство IoT Edge.
Если на компьютере разработки запущена управляющая программа IoT Edge, вам может потребоваться остановить EdgeHub и EdgeAgent перед началом разработки в Visual Studio.
Создание проекта Azure IoT Edge
Шаблон проекта IoT Edge в Visual Studio создает решение для развертывания на устройствах IoT Edge. Сначала вы создадите решение Azure IoT Edge. Затем вы создадите модуль в этом решении. Каждое решение IoT Edge может содержать несколько модулей.
Предупреждение
Средства Azure IoT Edge для расширения Visual Studio отсутствуют в шаблонах проектов для модулей C и C#. Если вы не можете создать модули IoT Edge с помощью расширения, используйте следующее решение.
Скачайте следующие файлы и поместите их в указанный каталог шаблонов Visual Studio:
| Файл шаблона | Добавление в каталог |
|---|---|
| azureiotedgemodule-v0.0.4.zip | %userprofile%\Documents\Visual Studio 2022\Templates\ProjectTemplates\Visual C# |
| azureiotedgevcmodulevs17-v0.0.9.zip | %userprofile%\Documents\Visual Studio 2022\Templates\ProjectTemplates\Visual C++ Project |
В нашем решении мы создадим три проекта. Основной модуль, содержащий EdgeAgent и EdgeHub, в дополнение к модулю датчика температуры. Затем вы добавите еще два модуля IoT Edge.
Внимание
Структура проекта IoT Edge, созданная Visual Studio, не совпадает с структурой проекта в Visual Studio Code.
В настоящее время интерфейс командной строки средства разработки Azure IoT Edge не поддерживает создание типа проекта Visual Studio. Используйте расширение Visual Studio IoT Edge для создания проекта Visual Studio.
В Visual Studio создайте проект .
В разделе "Создание проекта" найдите Azure IoT Edge. Выберите проект, соответствующий платформе и архитектуре устройства IoT Edge, а затем нажмите кнопку "Далее".
В поле "Настройка нового проекта" введите имя проекта, укажите расположение, а затем нажмите кнопку "Создать".
В разделе "Добавить модуль" выберите тип модуля, который требуется разработать. Если у вас есть существующий модуль, который вы хотите добавить в развертывание, выберите существующий модуль.
В поле "Имя модуля" введите имя модуля. Оно должно быть уникальным в пределах реестра контейнеров.
В URL-адресе репозитория укажите имя репозитория образов модуля. Visual Studio автоматически заполняет имя модуля с помощью localhost:5000/<имя> модуля. Замените его собственными данными реестра. Используйте localhost , если вы используете локальный реестр Docker для тестирования. Если используется Реестр контейнеров Azure, укажите сервер входа, заданный в параметрах реестра. Значение для сервера входа выглядит так: <имя реестра>.azurecr.io. Замените только часть localhost:5000, чтобы конечный результат выглядел как<
Выберите Добавить, чтобы добавить модуль в проект.
Примечание.
Чтобы изменить URL-адрес репозитория в существующем проекте IoT Edge, откройте файлmodule.json . URL-адрес репозитория находится в свойстве репозитория JSON-файла.
Теперь у вас есть проект IoT Edge и модуль IoT Edge в решении Visual Studio.
Структура проекта
Решение содержит две папки уровня проекта: основную папку проекта и одну папку модуля. Например, у вас может быть основная папка проекта с именем AzureIotEdgeApp1 и папка модуля с именем IotEdgeModule1. В основной папке проекта есть манифест развертывания.
Папка проекта модуля содержит файл для кода модуля с именем Program.cs или main.cв зависимости от выбранного языка. В этой папке также есть файл с именем module.json , описывающий метаданные модуля. Другие файлы Docker здесь предоставляют сведения, необходимые для сборки модуля в виде контейнера Windows или Linux.
Манифест развертывания проекта
Измените манифест развертывания с именем deployment.debug.template.json. Этот файл представляет собой шаблон манифеста развертывания IoT Edge, который определяет все модули, которые выполняются на устройстве и как они взаимодействуют друг с другом. Дополнительные сведения о манифестах развертывания см. в статье Сведения о развертывании модулей и настройке маршрутов.
При открытии этого шаблона развертывания вы увидите, что включены два модуля среды выполнения, edgeAgent и edgeHub, а также настраиваемый модуль, созданный в этом проекте Visual Studio. Также в нем имеется четвертый модуль — SimulatedTemperatureSensor. Этот модуль по умолчанию создает имитированные данные, которые можно использовать для тестирования модулей или удаления, если он не нужен. Сведения о работе имитированного датчика температуры см. в исходном коде SimulatedTemperatureSensor.csproj.
Задание версии среды выполнения IoT Edge
Последняя стабильная версия среды выполнения — 1.5. Обновите версию среды выполнения IoT Edge до последней стабильной версии или версии, которую вы хотите использовать для устройств.
В обозревателе решений щелкните правой кнопкой мыши имя основного проекта, а затем выберите "Задать версию среды выполнения IoT Edge".
Используйте раскрывающееся меню, чтобы выбрать версию среды выполнения, под управлением которой работают ваши устройства IoT Edge, а затем нажмите кнопку OK, чтобы сохранить изменения. Если изменения не были сделаны, нажмите кнопку "Отмена ", чтобы выйти.
Расширение не включает выбор для последних версий среды выполнения. Чтобы задать версию среды выполнения выше 1.2, откройте файл манифеста развертывания deployment.debug.template.json . Измените версию среды выполнения для образов модулей среды выполнения системы edgeAgent и edgeHub. Например, чтобы использовать среду выполнения IoT Edge версии 1.5, измените следующие строки в файле манифеста развертывания:
"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.5" //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.5", //...Если вы изменили версию, повторно создайте манифест развертывания, щелкнув правой кнопкой мыши имя проекта, а затем выберите "Создать развертывание для IoT Edge". Это создает манифест развертывания на основе шаблона развертывания и помещает его в папку конфигурации проекта Visual Studio.
Откройте файл манифеста развертывания deployment.debug.template.json . Манифест развертывания — это документ JSON, описывающий модули для настройки на целевом устройстве IoT Edge.
Измените версию среды выполнения для образов модулей среды выполнения системы edgeAgent и edgeHub. Например, чтобы использовать среду выполнения IoT Edge версии 1.5, измените следующие строки в файле манифеста развертывания:
"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.5", //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.5", //...
Параметры инфраструктуры модулей и разработки
При добавлении нового модуля он поставляется с кодом по умолчанию, готовым к сборке и развертыванию на устройстве, чтобы можно было начать тестирование, не затрагивая код. Код модуля находится в папке module в файле Program.cs (для C#) или main.c (для C).
Решение по умолчанию создается таким образом, что смоделированные данные из модуля SimulatedTemperatureSensor направляются в ваш модуль, который принимает ввод и отправляет его в центр Интернета вещей.
Когда вы будете готовы настроить шаблон модуля с добавлением собственного кода, используйте пакеты SDK для Центра Интернета вещей Azure, чтобы создать модули, которые удовлетворяют ключевые потребности решений Интернета вещей, такие как безопасность, управление устройствами и надежность.
Отладка с помощью симулятора
Средство разработки Azure IoT EdgeHub предоставляет локальную разработку и отладку. Средство позволяет запускать модули IoT Edge без среды выполнения IoT Edge для локального создания, разработки, тестирования, запуска и отладки модулей IoT Edge и решений. Нет необходимости отправлять образы в реестр контейнеров и развертывать их на устройстве для тестирования.
Подробнее см. в статье Средство разработки Azure IoT EdgeHub.
Чтобы инициализировать средство в Visual Studio, выполните следующие действия.
Получите строка подключения устройства IoT Edge (найденного в Центр Интернета вещей) из портал Azure или из Azure CLI.
При использовании интерфейса командной строки для получения строка подключения используйте эту команду, заменив "[device_id]" и "[hub_name]" собственными значениями:
az iot hub device-identity connection-string show --device-id [device_id] --hub-name [hub_name]В меню "Сервис" в Visual Studio выберите Azure IoT Edge Tools>Setup IoT Edge Simulator.
Вставьте строка подключения и нажмите кнопку "ОК".
Примечание.
Выполните следующие действия на компьютере разработки только раз, так как результаты автоматически применяются ко всем последующим решениям Azure IoT Edge. Если вам понадобится изменить строку подключения, тогда эту процедуру нужно выполнить еще раз.
Создание и отладка одного модуля
Как правило, необходимо протестировать и отладить каждый модуль перед запуском в целом решении с несколькими модулями. Средство симулятора IoT Edge позволяет запускать один модуль в изоляции отправки сообщений через порт 53000.
В Обозреватель решений выберите и выделите папку проекта модуля (например, IotEdgeModule1). Задайте пользовательский модуль в качестве запускаемого проекта. Выберите "Набор проектов" в качестве начального проекта> в меню.
Нажмите клавишу F5 или нажмите кнопку запуска панели инструментов, чтобы запустить симулятор IoT Edge для одного модуля. Изначально может потребоваться от 10 до 20 секунд.
Появится окно консольного приложения .NET Core, если модуль успешно инициализирован.
Задайте точку останова для проверки модуля.
- При разработке в C#задайте точку останова
PipeMessage()в функции в ModuleBackgroundService.cs. - Если для разработки используется C, задайте точку остановка в функции
InputQueue1Callback()в файле main.c.
- При разработке в C#задайте точку останова
Проверьте модуль, отправив сообщение. При отладке одного модуля симулятор прослушивает порт 53000 по умолчанию для сообщений. Чтобы отправить сообщение в модуль, выполните следующую команду curl из командной оболочки, например Git Bash или WSL Bash.
curl --header "Content-Type: application/json" --request POST --data '{"inputName": "input1","data":"hello world"}' http://localhost:53000/api/v1/messagesЕсли вы получаете ошибку , не совпадающую с закрывающей скобкой или скобкой в URL-адресе, попробуйте выполнить следующую команду:
curl --header "Content-Type: application/json" --request POST --data "{\"inputName\": \"input1\", \"data\", \"hello world\"}" http://localhost:53000/api/v1/messagesТочка останова должна быть активирована. Переменные можно просмотреть в окне "Локальные параметры Visual Studio " при запуске отладчика. Перейдите к разделу Отладка>локальных параметров Windows.>
В оболочке или Bash появится
{"message":"accepted"}подтверждение.В консоли .NET вы увидите следующее:
IoT Hub module client initialized. Received message: 1, Body: [hello world]Нажмите клавиши CTRL+F5 или выберите кнопку "Остановить", чтобы остановить отладку.
Создание и отладка нескольких модулей
После разработки единого модуля далее вы можете запустить и отладить все решение с несколькими модулями. Средство симулятора IoT Edge позволяет запускать все модули, определенные в манифесте развертывания, включая имитированный edgeHub для маршрутизации сообщений. В этом примере выполняется два пользовательских модуля и имитированный модуль датчика температуры. Сообщения из модуля имитированного датчика температуры направляются в каждый пользовательский модуль.
В Обозреватель решений добавьте второй модуль в решение, щелкнув правой кнопкой мыши папку основного проекта. В меню выберите Добавить>Новый модуль IoT Edge.
Add moduleВ окне присвойте новому модулю имя и заменитеlocalhost:5000часть URL-адреса репозитория вашим Реестр контейнеров Azure сервером входа, как и раньше.Откройте файл
deployment.debug.template.json, чтобы увидеть, что новый модуль добавлен в раздел модулей . Новый маршрут также был добавлен в раздел маршрутов дляEdgeHubотправки сообщений из нового модуля в Центр Интернета вещей. Чтобы отправить данные из имитированного датчика температуры в новый модуль, добавьте другой маршрут со следующей строкойJSON. Замените<NewModuleName>(в двух местах) собственным именем модуля."sensorTo<NewModuleName>": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/<NewModuleName>/inputs/input1\")"Щелкните правой кнопкой мыши основной проект (например, AzureIotEdgeApp1) и выберите "Задать в качестве проекта запуска". Задав основной проект в качестве запускаемого проекта, все модули в запуске решения. Сюда входят оба модуля, добавленные в решение, модуль имитированного датчика температуры и имитированный концентратор Edge.
Нажмите клавишу F5 или нажмите кнопку "Запустить панель инструментов", чтобы запустить решение. Изначально может потребоваться от 10 до 20 секунд. Убедитесь, что у вас нет других контейнеров Docker, которые могут привязать порт, необходимый для этого проекта.
Для каждого модуля должно появиться два окна консольного приложения .NET Core.
Установите точку останова для проверки модулей.
- При разработке в C#задайте точку останова
PipeMessage()в функции в ModuleBackgroundService.cs. - Если для разработки используется C, задайте точку остановка в функции
InputQueue1Callback()в файле main.c.
- При разработке в C#задайте точку останова
Создайте точки останова в каждом модуле, а затем нажмите клавишу F5 для одновременного запуска и отладки нескольких модулей. Вы увидите несколько окон консольного приложения .NET Core с каждым окном, представляющим другой модуль.
Нажмите клавиши CTRL+F5 или выберите кнопку "Остановить", чтобы остановить отладку.
Создание и отправка образов в реестр
После разработки и отладки модуля создайте и отправьте образ модуля в реестр контейнеров Azure. Затем разверните модуль на устройстве IoT Edge.
Задайте основной проект IoT Edge в качестве начального проекта, а не одного из отдельных модулей.
Выберите конфигурацию Отладка или Выпуск, которая будет применяться для образов модуля.
Примечание.
При выборе Отладка Visual Studio использует
Dockerfile.(amd64|windows-amd64).debugдля создания образов Docker. В образе контейнера включен отладчик командной строки .NET Core VSDBG. Для модулей IoT Edge, готовых к эксплуатации, используйте конфигурацию выпуска, которая используетDockerfile.(amd64|windows-amd64)без VSDBG.Если вы используете частный реестр, например Реестр контейнеров Azure (ACR), используйте следующую команду Docker для входа. Получите имя пользователя и пароль на странице ключей доступа реестра на портале Azure.
docker login <ACR login server>Добавьте сведения о входе в реестр контейнеров Azure в параметры среды выполнения в
deployment.debug.template.jsonфайле. Вы можете добавить учетные данные реестра в.envфайл (наиболее безопасный) или добавить их непосредственно вdeployment.debug.template.jsonфайл.Добавьте учетные данные в
.envфайл:В Обозреватель решений нажмите кнопку "Показать все файлы". Появится
.envфайл. Добавьте в файл Реестр контейнеров Azure имя пользователя и пароль.env. Найдите эти учетные данные на странице "Ключи доступа " реестра контейнеров Azure на портале Azure.
DEFAULT_RT_IMAGE=1.2 CONTAINER_REGISTRY_USERNAME_myregistry=<my-registry-name> CONTAINER_REGISTRY_PASSWORD_myregistry=<my-registry-password>Добавление учетных данных непосредственно в deployment.debug.template.json
Если вы хотите добавить учетные данные непосредственно в шаблон развертывания, замените заполнители именем администратора ACR, паролем и именем реестра.
"settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "registry1": { "username": "<username>", "password": "<password>", "address": "<registry name>.azurecr.io" } } }Примечание.
При работе с этой статьей используются учетные данные администратора для Реестра контейнеров Azure, что удобно для сценариев разработки и тестирования. Но после перехода в рабочую среду рекомендуется использовать для проверки подлинности вариант с минимальными правами, например субъект-службу. Дополнительные сведения см. в разделе Управление доступом к реестру контейнеров.
Если вы используете локальный реестр, запустите локальный реестр.
Наконец, в Обозреватель решений щелкните правой кнопкой мыши главную папку проекта и выберите "Сборка и отправка модулей IoT Edge", чтобы создать и отправить образ Docker для каждого модуля. Это может занять минуту. Когда вы увидите
Finished Build and Push IoT Edge Modules.в консоли вывода Visual Studio, все готово.
Развертывание решения
Теперь, когда вы создали и направили образы модулей в реестр контейнеров Azure, разверните решение на устройстве IoT Edge. В этом руководстве уже есть шаблон манифеста развертывания. Создайте манифест развертывания из него, а затем используйте команду Azure CLI для развертывания модулей на устройстве IoT Edge в Azure.
Щелкните правой кнопкой мыши основной проект в Visual Studio Обозреватель решений и выберите "Создать развертывание для IoT Edge".
Перейдите в локальную папку основного проекта Visual Studio и просмотрите
configее. Путь к файлу может выглядеть следующим образом:C:\Users\<YOUR-USER-NAME>\source\repos\<YOUR-IOT-EDGE-PROJECT-NAME>\configЗдесь вы найдете созданный манифест развертывания, напримерdeployment.amd64.debug.json.deployment.amd64.debug.jsonОткройте файл и убедитесь,edgeHubчто версия схемы установлена на 1.2."$edgeHub": { "properties.desired": { "schemaVersion": "1.2", "routes": { "IotEdgeModule2022ToIoTHub": "FROM /messages/modules/IotEdgeModule2022/outputs/* INTO $upstream", "sensorToIotEdgeModule2022": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/IotEdgeModule2022/inputs/input1\")", "IotEdgeModule2022bToIoTHub": "FROM /messages/modules/IotEdgeModule2022b/outputs/* INTO $upstream" }, "storeAndForwardConfiguration": { "timeToLiveSecs": 7200 } } }Совет
Шаблон развертывания для Visual Studio 2022 требует версии схемы 1.2. Если вам нужно, чтобы оно было 1.1 или 1.0, дождитесь, пока развертывание не будет создано (не изменяйте его в
deployment.debug.template.json). Создание развертывания по умолчанию создает схему 1.2. Однако вы можете вручную изменитьdeployment.amd64.debug.jsonсозданный манифест перед развертыванием в Azure.Внимание
После развертывания устройства IoT Edge он в настоящее время не отображается на портале Azure с схемой 1.2 (версия 1.1 является нормальной). Однако это не повлияет на устройство, так как оно по-прежнему подключено в Центре Интернета вещей и может взаимодействовать с ним в любое время с помощью Azure CLI.
Теперь давайте развернем наш манифест с помощью команды Azure CLI. Откройте командную строку разработчика Visual Studio и перейдите в каталог конфигурации.
cd configРазверните манифест для устройства IoT Edge, чтобы Центр Интернета вещей. Команда настраивает устройство для использования модулей, разработанных в решении. Манифест развертывания был создан на предыдущем шаге и сохранен в папке конфигурации . В папке конфигурации выполните следующую команду развертывания. Замените
[device id]значения ,[hub name]а также[file path]значениями. Если идентификатор устройства IoT Edge не существует в Центр Интернета вещей, его необходимо создать.az iot edge set-modules --device-id [device id] --hub-name [hub name] --content [file path]Например, команда может выглядеть следующим образом:
az iot edge set-modules --device-id my-device-name --hub-name my-iot-hub-name --content deployment.amd64.debug.jsonПосле выполнения команды в командной строке появится подтверждение развертывания, напечатанного в ФОРМАТЕ JSON.
Образ Docker модуля сборки
После разработки модуля создайте образ модуля для хранения в реестре контейнеров для развертывания на устройстве IoT Edge.
Используйте Dockerfile модуля для создания образа Docker модуля.
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
Например, если командная оболочка находится в каталоге проекта, а имя модуля — IotEdgeModule1, используйте следующие команды, чтобы создать образ для локального реестра или реестра контейнеров Azure:
# Build the image for the local registry
docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t localhost:5000/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"
# Or build the image for an Azure Container Registry
docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t myacr.azurecr.io/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"
Образ Docker модуля push
Отправьте образ модуля в локальный реестр или реестр контейнеров.
docker push <ImageName>
Например:
# Push the Docker image to the local registry
docker push localhost:5000/iotedgemodule1:0.0.1-amd64
# Or push the Docker image to an Azure Container Registry
az acr login --name myacr
docker push myacr.azurecr.io/iotedgemodule1:0.0.1-amd64
Разверните модуль на устройстве IoT Edge.
В Visual Studio откройте файл манифеста развертывания deployment.debug.template.json в основном проекте.
Манифест развертывания — это документ JSON, описывающий модули для настройки на целевом устройстве IoT Edge. Перед развертыванием необходимо обновить учетные данные Реестр контейнеров Azure, образы модулей и соответствующие createOptions значения. Дополнительные сведения о значениях createOption см. в разделе "Настройка параметров создания контейнера для модулей IoT Edge".
Если вы используете Реестр контейнеров Azure для хранения образа модуля, необходимо добавить учетные данные в deployment.debug.template.json в параметры edgeAgent. Например,
"modulesContent": { "$edgeAgent": { "properties.desired": { "schemaVersion": "1.1", "runtime": { "type": "docker", "settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "myacr": { "username": "myacr", "password": "<your_acr_password>", "address": "myacr.azurecr.io" } } } }, //...Замените значение свойства изображения именем образа модуля, отправленного в реестр. Например, если вы принудили изображение, помеченное
myacr.azurecr.io/iotedgemodule1:0.0.1-amd64для пользовательского модуля IotEdgeModule1, замените значение свойства изображения значением тега.Добавьте или замените значение createOptions строковым содержимым для каждого системного и пользовательского модуля в шаблоне развертывания.
Например, образ IotEdgeModule1 и параметры createOptions будут похожи на следующие:
"IotEdgeModule1": { "version": "1.0.0", "type": "docker", "status": "running", "restartPolicy": "always", "settings": { "image": "myacr.azurecr.io/iotedgemodule1:0.0.1-amd64", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}" }
Используйте команду набора модулей Azure CLI IoT Edge для развертывания модулей в Центре Интернета вещей Azure. Например, чтобы развернуть модули, определенные в файлеdeployment.debug.amd64.json, в IoT Hub my-iot-hub для устройства IoT Edge my-device, выполните следующую команду:
az iot edge set-modules --hub-name my-iot-hub --device-id my-device --content ./deployment.debug.template.json --login "HostName=my-iot-hub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=<SharedAccessKey>"
Совет
Найдите строку подключения в Центре Интернета вещей Azure на портале Azure в разделе >Параметры безопасности> Политики совместного доступа.
Подтверждение развертывания на устройстве
Чтобы проверка, что модули IoT Edge были развернуты в Azure, войдите на устройство (или виртуальную машину), например через SSH или Бастион Azure и выполните команду списка IoT Edge.
iotedge list
Вы увидите список модулей, работающих на устройстве или виртуальной машине.
NAME STATUS DESCRIPTION CONFIG
SimulatedTemperatureSensor running Up a minute mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0
edgeAgent running Up a minute mcr.microsoft.com/azureiotedge-agent:1.2
edgeHub running Up a minute mcr.microsoft.com/azureiotedge-hub:1.2
IotEdgeModule1 running Up a minute myacr.azurecr.io/iotedgemodule1:0.0.1-amd64.debug
myIotEdgeModule2 running Up a minute myacr.azurecr.io/myiotedgemodule2:0.0.1-amd64.debug
Отладка с помощью Удаленного SSH Docker
Подсистемы Docker и Moby поддерживают подключения SSH к контейнерам, что позволяет подключать и отлаживать код на удаленном устройстве с помощью Visual Studio.
Подключение удаленное подключение к Docker требует привилегий корневого уровня. Выполните действия, описанные в разделе "Управление docker в качестве пользователя, не являющегося корневым пользователем ", чтобы разрешить подключение к управляющей программе Docker на удаленном устройстве. После завершения отладки может потребоваться удалить пользователя из группы Docker.
Выполните действия, чтобы использовать Visual Studio для подключения к процессу, запущенного в контейнере Docker на удаленном устройстве.
В Visual Studio установите точки останова в пользовательском модуле.
При попадании в точку останова можно проверить переменные, выполнить пошаговое выполнение кода и выполнить отладку модуля.
Следующие шаги
Сведения о разработке пользовательских модулей для устройств IoT Edge см. в статье Понимание и использование пакетов SDK для Центра Интернета вещей Azure.
Чтобы отслеживать сообщения устройства в облако (D2C) для конкретного устройства IoT Edge, ознакомьтесь с руководством по мониторингу устройств IoT Edge, чтобы приступить к работе.