本文介绍Azure IoT Edge 上的Blob 存储配置。
当然,Blob容器也可以部署在本地Docker中或K8S中,IoT Edge 不是唯一的选择。
通过在IoT Edge上部署Blob存储,可以将原来直接上传到云端Storage的代码进行复用,文件可以存储在边缘上,然后利用blob容器的同步功能,自动将文件同步到云端。
本文部署过程参照:
本文配置步骤参照:
重点步骤:
在IoT Edge 的配置页面,添加新的容器:
在“模块设置”选项卡上,提供模块的名称,然后指定容器映像 URI :
示例:
- IoT Edge 模块名称:
azureblobstorageoniotedge(此处可以更换其他的名称)
- 映像 URI:
mcr.microsoft.com/azure-blob-storage:latest
在容器创建选项中配置如下:
{
"Env":[
"LOCAL_STORAGE_ACCOUNT_NAME=<your storage account name>",
"LOCAL_STORAGE_ACCOUNT_KEY=<your storage account key>"
],
"HostConfig":{
"Binds":[
"<storage mount>"
],
"PortBindings":{
"11002/tcp":[{"HostPort":"11002"}]
}
}
}
本例子中,我们的配置如下:
Account_Name 是自定义的值,不能有空格
Account_Key 由工具 https://generate.plus/en/base64 随机生成的一个64 字节 base64 密钥
HostConfig中的Binds 才用了 绑定装载的方式,其中/srv/containerdata是IoT Edge上的路径,:/blobroot是固定写法,不能变更。
需要对/srv/containerdata 配置权限,在IoT Edge上执行(仅针对linux系统):
sudo chown -R 11000:11000 /srv/containerdata
sudo chmod -R 700 /srv/containerdata
如果使用其他目录,则需要将命令中的目录替换成真实的目录。
{
"Env": [
"LOCAL_STORAGE_ACCOUNT_NAME=localstorage",
"LOCAL_STORAGE_ACCOUNT_KEY=Qog98fdtT0HH+aWaUpN5vA=="
],
"HostConfig": {
"Binds": [
"/srv/containerdata:/blobroot"
],
"PortBindings": {
"11002/tcp": [
{
"HostPort": "11002"
}
]
}
}
}
可以在Module Twin中配置 自动同步和自动删除功能,我们今天的例子中不配置这些内容。
待容器部署完成后,则可以按照如下方式在本地使用 Azure Storage Explorer 进行连接了。
提供连接字符串:DefaultEndpointsProtocol=http;BlobEndpoint=http://<host device name>:11002/<your local account name>;AccountName=<your local account name>;AccountKey=<your local account key>;
按照本例的配置,则连接字符串为:


- 对于部署在设备上的模块,如果该设备上运行 IoT Edge 上的 Azure Blob 存储模块,则 Blob 终结点为
http://<module name>:11002/<account name>
。 - 对于在其他设备上运行的模块或应用程序:
http://<device IP >:11002/<account name>
http://<IoT Edge device hostname>:11002/<account name>
http://<fully qualified domain name>:11002/<account name>
- 租用 blob
- 获取 blob 快照
- 复制和中止复制 blob
- 撤销删除 blob
- 设置 blob 层