配置Azure IoT Edge本地Blob Storage时遇容器未找到及连接拒绝错误
1. 修正Storage Explorer的连接目标
不要使用127.0.0.1:11002连接,改用EFLOW-VM的实际IP地址(从你提供的截图获取)。因为azureblobstorageoniotedge模块运行在EFLOW虚拟机内部,物理机的127.0.0.1无法指向VM内的服务。
先验证物理机到EFLOW-VM的端口连通性:
- Windows环境执行:
Test-NetConnection <EFLOW-VM-IP> -Port 11002 - Linux/macOS环境执行:
nc -zv <EFLOW-VM-IP> 11002
确保端口能正常连通,再重新尝试连接。
2. 检查azureblobstorageoniotedge模块的自动创建容器配置
确认模块孪生中的createContainers参数是否设为true,若为false,模块不会自动创建iotedgetest容器。查看模块孪生的配置片段:
"properties.desired": { "createContainers": true, // 其他配置项 }
若参数错误,修正后重启模块,确保配置生效。同时查看模块日志确认容器创建状态,在EFLOW-VM内执行:iotedged logs azureblobstorageoniotedge,搜索iotedgetest相关日志,排查是否有创建失败的具体原因。
3. 验证绑定挂载的权限与路径
- 检查EFLOW-VM内挂载目录的权限,执行:
ls -ld <你的挂载路径>,确保目录所属用户/组为iotedge(通常UID/GID为1000),若权限不符,执行:chown -R 1000:1000 <你的挂载路径> - 确认模块孪生中的绑定挂载配置正确,示例格式如下:
"bindMounts": { "<EFLOW内的挂载路径>": { "bindPath": "/blobstorage", "createOptions": {} } }
若挂载的是物理机磁盘,需确保物理机侧路径权限正确,且EFLOW-VM能正常访问该挂载点。
4. 修正Storage Explorer的连接方式
在Storage Explorer中选择「Azure Blob Storage」→「使用连接字符串」,输入模块孪生中connectionString的值,注意将连接字符串内的127.0.0.1替换为EFLOW-VM的实际IP,格式示例:DefaultEndpointsProtocol=http;AccountName=<账户名>;AccountKey=<密钥>;BlobEndpoint=http://<EFLOW-VM-IP>:11002/<账户名>;
不要选择「本地存储模拟器」选项,azureblobstorageoniotedge是独立的边缘模块服务,并非Azure存储模拟器。
内容的提问来源于stack exchange,提问作者user25065003

