再次讨论Azure IoT Edge模块开发的环境准备
分类: Azure物联网 ◆ 标签: #Azure #IoT Edge # ◆ 发布于: 2023-06-14 22:00:15
我们之前已经有了一篇文章来讨论如何准备开发环境,你可以从这个地址查看这篇文章:https://www.azuredeveloper.cn/article/how-to-setup-a-enviroment-for-azure-iot-edge-module-develop, 我们本章还是想再次总结一下如何为开发Azure IoT Edge模块准备开发环境的主要特点。
我们先总结一下最佳实践:
- 准备一台用于开发的机器,我们称之为开发机,开发机最好和用于测试的
Azure IoT Edge是两台机器,如果确实没有多余的机器,也可以使用虚拟机替代Azure IoT Edge的设备。 - 开发机和用于测试的
Azure IoT Edge关于容器要一致,例如开发机器是基于Linux 容器的,那么测试机器也应该是基于Linux容器的。另外需要注意的是Azure IoT Edge Runtime1.2仅仅支持基于Linux的容器。 - 设置项目的容器镜像使用远程的服务,包括
docker hub或者是微软的Azure Containter register - 使用
vs code开发调试时不一定非要使用插件remote-continaer, 也可以直接使用本机。 - 如果需要在本机调试需要有python的安装,同时要安装包:
pip install --upgrade iotedgehubdev, 主要用于模拟edgeHub模块处理消息的收发。
对于开发项目的整个准备checklist如下:
- 首先你需要一个
Azure账号,该账号用于创建Azure IoT Hub的资源。 - 创建一个
Azure IoT Hub的资源,并在该资源里创建一个Azure IoT Edge设备。 - 创建一个虚拟机,该虚拟机安装
Azure IoT Edge Runtime, 并使用SAS Key配置该Azure IoT Edge设备,使得该设备可以连接上Azure IoT Hub。 - 创建一个
Docker Hub账号或者是Azure Container register实例,我们创建的Azure IoT Edge模块会被发布到这里。 VS code需要安装插件Azure IoT Tool、Azure、Docker, 相关语言的插件,例如.Net的插件等。- 需要在开发机器上安装一个容器,例如
Docker Desktop,开发之前需要启动Docker。 - 在
VS code安装好插件之后,需要使用Azure IoT Hub插件选择您的默认Azure IoT Hub以及你注册的Azure IoT Edge设备。 - 创建新项目之后需要设置默认的
Azure IoT Edge Runtime版本。 - 创建新项目之后需要设置默认的
Azure IoT Edge Runtime运行的平台,例如是amd64还是arm64, 需要注意arm64目前还是在public preview阶段。 - 创建新项目之后需要设置默认的容器远程服务的认证,通过在文件
.env中配置相应的变量:CONTAINER_REGISTRY_USERNAME_<服务名>以及CONTAINER_REGISTRY_PASSWORD_<服务名>
上述最佳实践和checklist完成之后,我们还需要熟悉一下由Azure IoT Edge插件创建的项目模板:
项目模板
使用Azure IoT Edge插件创建一个新的Azure IoT Edge项目之后,我们会有如下的目录结构,我们一一来讲解一下目录结构以及各文件的用途:

目录结构说明:
.devcontainer: 如果需要在VS Code上使用插件remote-container在Docker容器里直接开发,那么插件就会使用这个目录用于构建一个remote-container的开发环境,您可以通过VS Code命令:Ctrl + Shift + P, 然后:Remote-containers:Open Folder in Containers从docker里打开项目。.vsdoe: 用于vs code定义环境或者调试环境。modules: 我们定义的Azure IoT Edge模块代码全部组织在这个目录里,每一个模块一个目录,依据使用的语言不同,大家可以根据自己熟悉的语言来定制自己的项目代码,总体来说,是一个控制台应用。在这个文件夹上单机右键,可以选择添加新的模块。.env: 用于定义访问远端的容器镜像服务器的定义,这里定义的变量会用于上传镜像到指定的位置。deployment.template.json和deployment.debug.template.json主要用于部署,其文件内容和我们之前学习的Azure IoT Edge自动部署大同小异。在这个文件上单击右键可以添加新的模块。