本文介绍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 层
 
