无法访问 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"
                  }
                ]
              }
            }
          }
        }
      }
    }