无法访问 Azure IoT Edge API 模块。请求超时
Azure IoT Edge API module cannot be accessed . Request timed out
我正在 API 安装在 Ubuntu hyper-v VM 上的 azure IoT edge 运行时上实施。
我在 Ubuntu 虚拟机的边缘运行时中实现了一个 flask API 模块,并且 运行。
所以我需要从 windows 上的本地机器 运行 的主机访问这个 API 10. API 模块 运行 上的 IP 地址是 http://172.20.36.197:5000/predict.
这适用于来宾(Ubuntu hyper-v VM)机器,但每次我尝试在主机中调用此调用时请求超时。我什至禁用了主机 VM 的防火墙。但没有运气。似乎我必须从主机访问 Ubuntu VM 上的物联网边缘运行时 运行。
我只是 运行 docker 容器中的同一个烧瓶 API 不在物联网边缘运行时作为边缘模块,而是在 docker 内部 Ubuntu Hyper-v VM 和我可以毫无问题地从主机访问 API。以下是我在 IoT edge runtime
上的 flask API edge 模块 运行 的代码
import os
from azure.iot.device.aio import IoTHubModuleClient
from flask import Flask
port =int(os.environ.get("port",5000))
print("port is ",port)
# Initialize flask app
app = Flask(__name__)
# Create an endpoint
@app.route('/predict')
def predict_chiller_condition():
print("api func called")
predictedVal=3
return 'predicted value is '+str(predictedVal)
if __name__ == "__main__":
app.run(host='0.0.0.0',port=port)
对于正在努力解决这种情况的任何人,您应该通过在 [=15] 的 createOptions
部分中添加 ExposedPorts
在来宾 VM 上公开边缘模块容器 运行 =] 如下。并且 VM 的 IPv4 地址也应与相关端口一起使用。
"modules": {
"test_flask_api": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "${MODULES.test_flask_api}",
"createOptions": {
"ExposedPorts": {
"5000/tcp": {}
},
"HostConfig": {
"PortBindings": {
"5000/tcp": [
{
"HostPort": "5000"
}
]
}
}
}
}
}
}
我正在 API 安装在 Ubuntu hyper-v VM 上的 azure IoT edge 运行时上实施。 我在 Ubuntu 虚拟机的边缘运行时中实现了一个 flask API 模块,并且 运行。 所以我需要从 windows 上的本地机器 运行 的主机访问这个 API 10. API 模块 运行 上的 IP 地址是 http://172.20.36.197:5000/predict.
这适用于来宾(Ubuntu hyper-v VM)机器,但每次我尝试在主机中调用此调用时请求超时。我什至禁用了主机 VM 的防火墙。但没有运气。似乎我必须从主机访问 Ubuntu VM 上的物联网边缘运行时 运行。
我只是 运行 docker 容器中的同一个烧瓶 API 不在物联网边缘运行时作为边缘模块,而是在 docker 内部 Ubuntu Hyper-v VM 和我可以毫无问题地从主机访问 API。以下是我在 IoT edge runtime
上的 flask API edge 模块 运行 的代码import os
from azure.iot.device.aio import IoTHubModuleClient
from flask import Flask
port =int(os.environ.get("port",5000))
print("port is ",port)
# Initialize flask app
app = Flask(__name__)
# Create an endpoint
@app.route('/predict')
def predict_chiller_condition():
print("api func called")
predictedVal=3
return 'predicted value is '+str(predictedVal)
if __name__ == "__main__":
app.run(host='0.0.0.0',port=port)
对于正在努力解决这种情况的任何人,您应该通过在 [=15] 的 createOptions
部分中添加 ExposedPorts
在来宾 VM 上公开边缘模块容器 运行 =] 如下。并且 VM 的 IPv4 地址也应与相关端口一起使用。
"modules": {
"test_flask_api": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "${MODULES.test_flask_api}",
"createOptions": {
"ExposedPorts": {
"5000/tcp": {}
},
"HostConfig": {
"PortBindings": {
"5000/tcp": [
{
"HostPort": "5000"
}
]
}
}
}
}
}
}