设置Azure IoT Edge模块的开发环境和Hello World
分类: Azure物联网 ◆ 标签: #Azure #IoT Edge # ◆ 发布于: 2023-06-14 21:32:44
我们之前学习的文章都是理解什么是Azure IoT Edge, 跟着学习了如何安装Azure IoT Edge runtime, 以及如何部署Azure IoT Edge设备,同时也学习了如何使用自动部署来部署Azure IoT Edge的模块,同时我们也理解了Azure IoT Edge提供的两个系统模块的用途以及分工。但是我们一直没有学习如何进行Azure IoT Edge的模块开发,本站开始学习一下Azure IoT Edge模块是如何开发的。
从之前的学习中我们理解了Azure IoT Edge模块就是使用容器封装好的一个镜像,我们开发好这个镜像之后可以上传到某个容器镜像库里,然后通过该库对我们自行开发的模块进行部署到IoT Edge设备上,这个部分我们前面已经是学习过了。
工欲善其事必先利其器,要开发Azure IoT Edge的模块,我们首先需要准备好开发环境,在本节,我们主要使用的工具/环境如下:
- 用于开发的开发机器:windows 10/windows 11 均可以。
- Docker Desktop 版本,选择基于
Linux的容器。 - 微软的编辑器:
Visual Studio Code以及插件Azure,Azure IoT Tools。
那么我先来设置自己的开发环境。
安装Docker Desktop
我们从官网就可以下载到Docker Desktop了,下载地址是:https://docs.docker.com/desktop/windows/install/, 您可以从这个网络学习到如何在Windows上安装Docker。
安装Visual Studio Code
我们简短的使用如下的步骤来安装Visual Studio Code:
- 从这里下载
VS code和安装: https://code.visualstudio.com/ - 安装成功后,启动
VS Code, 选择view->Extensions - 搜索插件
Azure IoT Tools, 该插件还会依赖安装Azure插件。 - 插件安装完成后,选择
View->Command Palette, 或者直接用快捷键:Ctrl + Shift + P也可以打开Command Palette模式。 - 在命令输入板(
Command Palette),输入:Azure:Sign into Azure Cloud, 选择你所在的Azure 区域,例如Azure China, 跟着命令登录成功。 - 继续使用快捷键打开
Command Palette, 然后输入:Azure IoT Hub: Select IoT Hub选择你所在的订阅的IoT Hub。 - 在
Explorer面板(一般是左侧面板最上面第一个图标就是Explorer, 也可以使用快捷键:Ctrl + Shift + E) - 在
Explorer面板上可以找到Azure IoT Hub的面板,找到你所在的设备和hub, 如下图:

创建一个Container registry
您可以直接使用Docker的Docker hub, 也可以像本章一样使用Azure提供的Container registry。
采用如下的步骤创建一个Container registry:
- 登录到
Azure - 搜索
Container registry - 按照提示创建成功后,找到overview页面,然后选择
Access Keys, 启用Admin User, 如下图:

到这里算是开发环境准备好了,现在我们需要尝试使用这套开发环境来进行一个简单的Hello World的模块开发。
新项目的开发
按照上面的配置,配置好了环境之后,一定要记得启动Docker for Desktop。
然后打开Vs Code, 使用快捷键Ctrl + Shift + P打开Command Palette, 输入:Azure IoT Edge: New IoT Edge Solution, 然后跟着弹出的窗口提示创建一个新的IoT Edge 方案:
| 步骤 | Value |
|---|---|
选择文件夹(Select folder) | 选择您的开发机器上使用哪个目录保存Azure IoT Edge的项目 |
给您的项目起一个名字(Provide a solution name) | 给自己的项目起一个名字就好了,这一步,例如Demo1Solution |
选择一个模型模板(Select module template) | 我们这个项目选择Choose C# Module |
给你要开发的模块起一个名字(Provide a module name) | 我们这个快速项目就接受默认的名字好了SampleModule |
提供一个docker的注册库(Provide Docker image repository for the module) | 我们之前创建Azure Container Registry |
如下图:

设置Azure IoT Edge runtime的版本号
在Vs Code上使用快捷键Ctrl + Shift + P打开Command Palette, 输入Azure IoT Edge: Set Default IoT Edge Runtime Version, 选择你需要的版本,目前建议1.2和1.1。
设置目标机器的架构
在Vs Code上使用快捷键Ctrl + Shift + P打开Command Palette, 输入Azure IoT Edge: Set Default Target Platform for Edge Solution, 我们这里选择amd64。
设置你的容器镜像服务器的登录账号
在Vs Code里打开文件.env, 如下所示:
CONTAINER_REGISTRY_USERNAME_docker=你的用户名 CONTAINER_REGISTRY_PASSWORD_docker=你的登录密码
至此您的第一个项目就算是创建好了,如下图:

这里有一些需要注意的文件和目录:
.vscode目录是vs code用于启动配置项目插件等等, 例如文件launch.json用于定义调试模块。modules, 包含我们要开发的模块的所有文件,一个模块一个文件夹.env: 该文件保存容器镜像库的登录信息,可以和Azure IoT Edge设备分享,用于下载模块的镜像。- 文件
deployment.debug.template.json和deployment.template.json文件帮助用户用于定义部署文件。
到这一步我们已经有了一个开发环境,并且也有了一个用于测试的项目,您可以尝试采用如下的步骤来发布:
- 使用
View->Terminal或者是快捷键打开一个终端。 - 在终端里输入:
docker login -u <ACR username> -p <ACR password> <ACR login server> - 在终端里输入:
az acr login -n <ACR registry name> - 在右侧找到文件
deployment.template.json, 然后右键Build and Push IoT Edge Solution, 如下图就可以将这个项目发布到您的容器库中。
另外在机器上启动docker, 并且由于项目目录有.devcontianer, VS Code会建议你从remote-container里打开项目,这个会需要一段时间,不过这个很好用。
至此全部结束了,下一节,我们学习如何开发一个自定义的Azure IoT Edge模块。