微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure IoT 中心 - 无法创建分层部署

如何解决Azure IoT 中心 - 无法创建分层部署

我正在尝试为 Azure IoT 中心创建分层部署。

基本完全部署没问题。这里的配置:

{
  "content": {
    "modulesContent": {
      "$edgeAgent": {
        "properties.desired": {
          "schemaVersion": "1.0","runtime": {
            "type": "docker","settings": {
              "minDockerVersion": "v1.25","loggingOptions": "","registryCredentials": {
                "docker": {
                  "username": "$CONTAINER_REGISTRY_USERNAME_docker","password": "$CONTAINER_REGISTRY_PASSWORD_docker","address": "docker.io"
                }
              }
            }
          },"systemModules": {
            "edgeAgent": {
              "type": "docker","settings": {
                "image": "mcr.microsoft.com/azureiotedge-agent:1.0","createOptions": "{}"
              }
            },"edgeHub": {
              "type": "docker","status": "running","restartPolicy": "always","settings": {
                "image": "mcr.microsoft.com/azureiotedge-hub:1.0","createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
              }
            }
          },"modules": {
            "Sender": {
              "version": "1.0.0","type": "docker","settings": {
                "image": "${MODULEDIR<../Sender>}","Module1": {
              "version": "1.0.0","settings": {
                "image": "${MODULEDIR<../Module1>}","Module2": {
              "version": "1.0.0","settings": {
                "image": "${MODULEDIR<../Module2>}","Module11": {
              "version": "1.0.0","settings": {
                "image": "${MODULEDIR<../Module11>}","createOptions": "{}"
              }
            }
          }
        }
      },"$edgeHub": {
        "properties.desired": {
          "schemaVersion": "1.0","routes": {
            "SenderToModule1": "FROM /messages/modules/Sender/outputs/* WHERE $body.Receiver = 'Module1' INTO brokeredEndpoint(\"/modules/Module1/inputs/input\")","SenderToModule2": "FROM /messages/modules/Sender/outputs/* WHERE $body.Receiver = 'Module2' INTO brokeredEndpoint(\"/modules/Module2/inputs/input\")","SenderToModule11": "FROM /messages/modules/Sender/outputs/* WHERE $body.Receiver = 'Module11' INTO brokeredEndpoint(\"/modules/Module11/inputs/input\")","Module1ToModule11": "FROM /messages/modules/Module1/outputs/* INTO brokeredEndpoint(\"/modules/Module11/inputs/input\")","SenderToHub": "FROM /messages/modules/Module1/outputs/* WHERE $body.Receiver = 'Hub' INTO $upstream"
          },"storeAndForwardConfiguration": {
            "timetoLiveSecs": 7200
          }
        }
      }
    }
  }
}

接下来,我尝试创建一个分层部署启动命令

az iot edge deployment create --layered --deployment-id deploy001 --hub-name <hubname> --content ./layeredtarget.json --target-condition "tags.deviceid='TargetDevice'" --priority 2

这里是 layeredtarget.json 文件

{
    "content": {
        "modulesContent": {
            "$edgeHub": {
                "properties.desired.routes.SenderToModule1": "FROM /messages/modules/Sender/outputs/* WHERE $body.Receiver = 'UPDATE_layered' INTO brokeredEndpoint(\"/modules/Module1/inputs/input\")"
            }
        }
    }
}

通过启动 powershell 命令,我收到了这个错误

{'Message': 'ErrorCode:InvalidConfigurationContent;为配置提供的内容无效。 >请检查并重试','ExceptionMessage': 'Tracking ID:f716a3c452914ea4a1ad1ee958a7b2ff-G:5->TimeStamp:01/20/2021 16:14:15'}

我不明白是我做错了。我关注了这个Doc 有人有什么想法吗?

解决方法

如果您还包括 $edgeAgent,您的分层部署将正常工作。我所做的是在门户中重新创建您的部署,检查 JSON 并注意到空的 edgeAgent。我想没有多少人只用一条路线来创建分层部署。不过主意不错。我使用 CLI 在我的集线器上测试了下面的 JSON,它工作正常:

{
    "content": {
        "modulesContent": {
            "$edgeAgent": {},"$edgeHub": {
                "properties.desired.routes.SenderToModule1": "FROM /messages/modules/Sender/outputs/* WHERE $body.Receiver = 'UPDATE_LAYERED' INTO BrokeredEndpoint(\"/modules/Module1/inputs/input\")"
            }
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。