【问题标题】:Trouble connecting to AMLS web service on AKS using Python requests使用 Python 请求连接到 AKS 上的 AMLS Web 服务时遇到问题
【发布时间】:2020-09-18 10:59:13
【问题描述】:

我在联系 Vnet 中 AKS 上托管的 AMLS Web 服务时遇到问题。我能够成功配置 AKS 并部署模型,但我无法使用 Python 请求模块访问 Web 服务:

headers = {'Content-Type':'application/json',
           'Authorization': 'Bearer ' + <AKS_KEY>}
resp = requests.post(<AKS_URI>, json={"data":{"x": "1"}}, headers=headers)
print(resp.text)

我收到以下错误:

错误:HTTPConnectionPool(host='', port=80):最大重试次数超出了 url:(由 NewConnectionError(' 引起:无法建立新连接: [Errno 110] 连接超时'))

但是,我可以使用 Postman 成功连接到 Web 服务:

curl --location --request POST <AKS_URI> \
--header 'Authorization: Bearer <AKS_KEY>' \
--header 'Content-Type: application/json' \
--data-raw '{"data": {"x": "1"}}'

如果我在我的 AMLS 工作区aks_service.run() 中加载 AKS 服务,也会给我同样的错误消息。我在没有 vnet 集成的情况下部署时没有这些问题。

这可能是什么原因造成的?

【问题讨论】:

  • 您的网址中有参数吗?如果是这样,请尝试将它们放入单独的参数params={...}
  • 网址中没有参数。
  • AML 工作区是否与 AKS 服务位于同一 vnet 中?还有你用的是什么版本的SDK?还有aks_service.run()错误,你能分享更多代码和完整的堆栈跟踪吗?
  • AML 工作区不在 vnet 中。我发现了我的错误,并将在下面发布答案。

标签: curl python-requests postman azure-aks azure-machine-learning-service


【解决方案1】:

我通过在控制虚拟网络的 NSG 组中添加为评分端点启用的入站安全规则来解决此问题。

应该这样做,以便可以从虚拟网络外部调用评分端点(请参阅documentation),但显然 Postman 可以弄清楚如何在没有此安全规则的情况下访问端点!

【讨论】:

【解决方案2】:

我同意这很奇怪。我最初的反应是,在您的requests 请求和您的curl 请求中出现了一个很小的字符串格式问题。但我看到您在使用aks_service.run() 时遇到了同样的错误。 也许阅读更多关于how to secure the deployed service 的信息会有所帮助?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2022-07-14
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    相关资源
    最近更新 更多