无法使用 Python 请求连接到 AKS 上的 AMLS Web 服务
Trouble connecting to AMLS web service on AKS using Python requests
我在联系 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)
我收到以下错误:
Error: HTTPConnectionPool(host='', port=80): Max retries exceeded with url: <AKS_URL> (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f33f6035a10>: Failed to establish a new connection: [Errno 110] Connection timed out'))
但是,我能够使用 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 服务 aks_service.run()
也会给我相同的错误消息。我在没有 vnet 集成的情况下部署时没有这些问题。
可能是什么原因造成的?
我同意这很奇怪。我最初的反应是 b/w 您的 requests
请求和 curl
请求发生了一个很小的字符串格式问题。但我看到您在使用 aks_service.run()
时遇到了同样的错误。
或许阅读更多关于 how to secure the deployed service 的内容会有帮助?
我通过添加为控制虚拟网络的 NSG 组中的评分终结点启用的入站安全规则来解决此问题。
应该这样做,以便可以从虚拟网络外部调用评分端点(请参阅 documentation),但显然 Postman 可以弄清楚如何在没有此安全规则的情况下访问端点!
我在联系 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)
我收到以下错误:
Error: HTTPConnectionPool(host='', port=80): Max retries exceeded with url: <AKS_URL> (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f33f6035a10>: Failed to establish a new connection: [Errno 110] Connection timed out'))
但是,我能够使用 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 服务 aks_service.run()
也会给我相同的错误消息。我在没有 vnet 集成的情况下部署时没有这些问题。
可能是什么原因造成的?
我同意这很奇怪。我最初的反应是 b/w 您的 requests
请求和 curl
请求发生了一个很小的字符串格式问题。但我看到您在使用 aks_service.run()
时遇到了同样的错误。
或许阅读更多关于 how to secure the deployed service 的内容会有帮助?
我通过添加为控制虚拟网络的 NSG 组中的评分终结点启用的入站安全规则来解决此问题。
应该这样做,以便可以从虚拟网络外部调用评分端点(请参阅 documentation),但显然 Postman 可以弄清楚如何在没有此安全规则的情况下访问端点!