You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure环境Python Notebook调用外部API失败,需哪些前置配置?

解决Azure环境中Python Notebook调用外部REST API的信任及连接问题

针对你在Azure环境下通过Python Notebook调用Splunk、ServiceNow CMDB等REST API失败的问题,结合你怀疑的“请求未被信任”点,下面是具体的排查方向和对应的Azure配置操作:

1. 先确认Azure网络层面的放行配置

如果你的Notebook运行在Azure托管资源(如Azure VM、Azure ML Compute实例)上,首先排查网络是否允许出站请求:

  • NSG(网络安全组)出站规则:登录Azure门户,找到对应资源关联的NSG,添加出站规则,允许访问目标API的端口(比如Splunk默认8089,ServiceNow默认443),目标可以是具体IP段或域名。
  • Azure防火墙/代理:若企业Azure环境部署了Azure防火墙或强制代理,需要:
    • 在Python代码中配置代理信息:
      import requests
      proxies = {
          'http': 'http://your-azure-proxy-address:port',
          'https': 'http://your-azure-proxy-address:port'
      }
      # 示例调用ServiceNow
      resp = requests.get('https://your-servicenow-instance/api/now/table/cmdb_ci', proxies=proxies)
      
    • 在Azure防火墙中添加应用/网络规则,放行目标API的域名或IP地址。

2. SSL证书信任问题(对应你怀疑的“请求未被信任”)

这是最常见的原因,尤其是目标服务使用自签名或企业内部CA签发的证书时:

  • 把企业CA证书导入Python环境的信任存储,或者在requests调用时直接指定证书路径:
    # 示例调用Splunk时指定CA证书
    resp = requests.get('https://your-splunk-instance/services/search/jobs', verify='/path/to/enterprise-ca.crt')
    
  • 若使用Azure托管Notebook(如Azure ML),可设置环境变量REQUESTS_CA_BUNDLE指向证书文件,让requests全局信任该证书。

3. Azure AD身份验证配置(若目标服务集成Azure AD)

如果Splunk/ServiceNow通过Azure AD做身份验证,直接调用API需要先获取Azure AD令牌:

  • 使用Azure Identity库获取令牌,再携带到请求头:
    import requests
    from azure.identity import DefaultAzureCredential
    
    # 获取令牌,替换为目标服务的Azure AD受众
    cred = DefaultAzureCredential()
    token = cred.get_token("https://your-service-aad-audience/.default")
    
    headers = {
        'Authorization': f'Bearer {token.token}',
        'Content-Type': 'application/json'
    }
    resp = requests.get('https://target-api-endpoint', headers=headers)
    
  • 确保你的身份(VDI登录身份或Notebook托管身份)在Azure AD中被授予了访问目标服务的权限,需在Azure AD应用注册中配置对应的API权限并同意。

4. 快速定位问题的小技巧

先捕获requests的详细错误信息,精准定位问题类型:

import requests
try:
    resp = requests.get('https://target-api-url')
    resp.raise_for_status()
except Exception as e:
    print(f"错误详情:{type(e).__name__} - {str(e)}")

比如SSLError指向证书问题,ConnectionError指向网络/代理问题,401 Unauthorized指向身份验证问题。

内容的提问来源于stack exchange,提问作者Rishav kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 16:06:42