Azure ML Python模块调用认知服务执行失败问题咨询
根因判定
你遇到的ServiceRequestError: <urllib3.connection.HTTPSConnection object at 0x7ff4dc727588>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution报错核心是DNS解析失败:Azure ML管道运行的计算环境无法正常解析Text Analytics服务的端点域名,该问题和代码逻辑、TLS版本无关,你已确认OpenSSL 1.1.1k支持TLS 1.2,可以直接排除加密协议相关问题。
可用解决方案
- 检查VNet与NSG出站配置
如果你的Azure ML工作区接入了虚拟网络,首先确认管道所用计算资源所在子网的NSG出站规则允许443端口访问认知服务:如果认知服务启用了公网访问,需要放通到*.cognitiveservices.azure.com的HTTPS请求;如果认知服务用私有端点接入,需确认VNet私有DNS区域已正确配置对应私有端点的A记录。 - 修正管道内认知服务端点配置
排查脚本中传入TextAnalyticsClient的endpoint参数是否和你在Azure Portal中创建的认知服务端点完全一致,避免拼写错误、多余后缀导致访问不存在的域名。 - 手动指定运行环境DNS
如果是VNet自定义DNS配置异常导致的解析失败,可以在管道执行脚本的接口调用代码前添加临时解析逻辑:
import socket # 可替换为你VNet内的DNS服务器IP,以下为Azure默认公共DNS socket.getaddrinfo("你的认知服务端点域名", 443, proto=socket.IPPROTO_TCP)
- 配置Azure ML出站访问规则
如果你的工作区开启了出站访问限制,在工作区「网络」-「出站规则」页面新增规则,服务标签选择对应区域的CognitiveServices,放通到认知服务的官方出站流量即可。
内容的提问来源于stack exchange,提问作者Angus B
相关产品推荐
相关产品推荐

