启动关闭 1 个月以上的 VM 后出现 IoT Edge 运行时错误 400
IoT Edge runtime error 400 after starting VM which was off for 1+ months
我在 Ubuntu 16.04 上有一个工作的 VM 运行 IoT Edge 1.0.10.3,我在过去一个月左右关闭了它。
今天开机发现:
- 我可以启动所有模块。他们都报告运行
- 运行时响应是:
400 -- The deployment configuration is malformed or invalid
- 运行 iotedge 检查,好像没有错误
- 当我尝试
set modules
时,在物联网边缘模块下:There are no listed IoT Edge Modules
- 另外,我在 EdgeHub 日志中收到以下错误:
<4> 2021-01-19 22:27:12.834 +00:00 [WRN] - Error getting edge hub config from twin desired properties
System.ArgumentException: schemaVersion is null or whitespace.
at Microsoft.Azure.Devices.Edge.Util.Preconditions.CheckArgument(Boolean expression, String message) in /home/vsts/work/1/s/edge-util/src/Microsoft.Azure.Devices.Edge.Util/Preconditions.cs:line 73
at Microsoft.Azure.Devices.Edge.Util.Preconditions.CheckNonWhiteSpace(String value, String paramName) in /home/vsts/work/1/s/edge-util/src/Microsoft.Azure.Devices.Edge.Util/Preconditions.cs:line 192
at Microsoft.Azure.Devices.Edge.Hub.Core.Config.EdgeHubDesiredProperties..ctor(String schemaVersion, IDictionary`2 routes, StoreAndForwardConfiguration storeAndForwardConfiguration) in /home/vsts/work/1/s/edge-hub/src/Microsoft.Azure.Devices.Edge.Hub.Core/config/EdgeHubDesiredProperties.cs:line 14
at lambda_method(Closure , Object[] )
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObjectUsingCreatorWithParameters(JsonReader reader, JsonObjectContract contract, JsonProperty containerProperty, ObjectConstructor`1 creator, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewObject(JsonReader reader, JsonObjectContract objectContract, JsonProperty containerMember, JsonProperty containerProperty, String id, Boolean& createdFromNonDefaultCreator)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at Microsoft.Azure.Devices.Edge.Hub.Core.Config.TwinConfigSource.GetConfigInternal() in /home/vsts/work/1/s/edge-hub/src/Microsoft.Azure.Devices.Edge.Hub.Core/config/TwinConfigSource.cs:line 97
at Microsoft.Azure.Devices.Edge.Hub.Core.Config.TwinConfigSource.GetConfigInternal() in /home/vsts/work/1/s/edge-hub/src/Microsoft.Azure.Devices.Edge.Hub.Core/config/TwinConfigSource.cs:line 105
在过去一个月的离线状态中,可能发生了什么使 Edge 处于不一致状态?
根据 docs,您的日志引用的 $schemaVersion 是在 1.0.10 中引入的。文档说 属性 是推荐的,但运行时似乎需要它。在您的评论中,您包含了所需的属性,但缺少 $schemaVersion。尝试设置以下所需属性:
"properties":{
"desired":{
"routes":{},
"schemaVersion": "1.1",
"$metadata":{
"$lastUpdated":"2020-11-25T18:26:39.4780665Z",
"$lastUpdatedVersion":5,
"routes":{
"$lastUpdated":"2020-11-25T15:03:42.6671499Z",
"$lastUpdatedVersion":4
}
}
}
}
我在 Ubuntu 16.04 上有一个工作的 VM 运行 IoT Edge 1.0.10.3,我在过去一个月左右关闭了它。
今天开机发现:
- 我可以启动所有模块。他们都报告运行
- 运行时响应是:
400 -- The deployment configuration is malformed or invalid
- 运行 iotedge 检查,好像没有错误
- 当我尝试
set modules
时,在物联网边缘模块下:There are no listed IoT Edge Modules
- 另外,我在 EdgeHub 日志中收到以下错误:
<4> 2021-01-19 22:27:12.834 +00:00 [WRN] - Error getting edge hub config from twin desired properties
System.ArgumentException: schemaVersion is null or whitespace.
at Microsoft.Azure.Devices.Edge.Util.Preconditions.CheckArgument(Boolean expression, String message) in /home/vsts/work/1/s/edge-util/src/Microsoft.Azure.Devices.Edge.Util/Preconditions.cs:line 73
at Microsoft.Azure.Devices.Edge.Util.Preconditions.CheckNonWhiteSpace(String value, String paramName) in /home/vsts/work/1/s/edge-util/src/Microsoft.Azure.Devices.Edge.Util/Preconditions.cs:line 192
at Microsoft.Azure.Devices.Edge.Hub.Core.Config.EdgeHubDesiredProperties..ctor(String schemaVersion, IDictionary`2 routes, StoreAndForwardConfiguration storeAndForwardConfiguration) in /home/vsts/work/1/s/edge-hub/src/Microsoft.Azure.Devices.Edge.Hub.Core/config/EdgeHubDesiredProperties.cs:line 14
at lambda_method(Closure , Object[] )
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObjectUsingCreatorWithParameters(JsonReader reader, JsonObjectContract contract, JsonProperty containerProperty, ObjectConstructor`1 creator, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewObject(JsonReader reader, JsonObjectContract objectContract, JsonProperty containerMember, JsonProperty containerProperty, String id, Boolean& createdFromNonDefaultCreator)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at Microsoft.Azure.Devices.Edge.Hub.Core.Config.TwinConfigSource.GetConfigInternal() in /home/vsts/work/1/s/edge-hub/src/Microsoft.Azure.Devices.Edge.Hub.Core/config/TwinConfigSource.cs:line 97
at Microsoft.Azure.Devices.Edge.Hub.Core.Config.TwinConfigSource.GetConfigInternal() in /home/vsts/work/1/s/edge-hub/src/Microsoft.Azure.Devices.Edge.Hub.Core/config/TwinConfigSource.cs:line 105
在过去一个月的离线状态中,可能发生了什么使 Edge 处于不一致状态?
根据 docs,您的日志引用的 $schemaVersion 是在 1.0.10 中引入的。文档说 属性 是推荐的,但运行时似乎需要它。在您的评论中,您包含了所需的属性,但缺少 $schemaVersion。尝试设置以下所需属性:
"properties":{
"desired":{
"routes":{},
"schemaVersion": "1.1",
"$metadata":{
"$lastUpdated":"2020-11-25T18:26:39.4780665Z",
"$lastUpdatedVersion":5,
"routes":{
"$lastUpdated":"2020-11-25T15:03:42.6671499Z",
"$lastUpdatedVersion":4
}
}
}
}