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

Azure Linux环境部署Python应用出现KeyError: 'IDENTITY_ENDPOINT'错误如何解决

错误原因

KeyError: 'IDENTITY_ENDPOINT' 报错的核心原因是你部署的Azure Linux App Service尚未启用托管身份。只有为App Service开启托管身份配置后,Azure平台才会自动在应用运行环境中注入IDENTITY_ENDPOINT、IDENTITY_HEADER两个专属系统环境变量,未开启配置的情况下这两个变量不存在,直接读取就会触发键不存在的异常。

需完成的配置步骤

  • 启用托管身份

    进入Azure门户对应App Service的资源详情页,左侧导航栏找到「身份标识」选项,切换到「系统分配的托管身份」标签,将状态调整为启用后保存配置,Azure会自动为该应用生成对应的托管身份实体。
  • 授予资源访问权限

    找到你需要通过令牌访问的目标Azure资源(如存储账户、密钥保管库等),进入资源的「访问控制(IAM)」页面,添加角色分配,将上述应用托管身份授予对应资源的所需访问权限(如存储Blob数据读取者、密钥保管库机密用户等)。
  • 验证配置生效

    配置完成后重启App Service,进入App Service的「高级工具(Kudu)」Bash终端,执行env | grep IDENTITY命令,确认IDENTITY_ENDPOINT和IDENTITY_HEADER两个环境变量已正常生成即可。

可选代码优化

可以在原有代码中添加环境变量校验逻辑,提前拦截配置缺失问题:

import os
import requests

def get_bearer_token(resource_uri):
    # 提前校验环境变量
    if "IDENTITY_ENDPOINT" not in os.environ or "IDENTITY_HEADER" not in os.environ:
        raise RuntimeError("请先为App Service启用托管身份配置")
    identity_endpoint = os.environ["IDENTITY_ENDPOINT"]
    identity_header = os.environ["IDENTITY_HEADER"]
    
    token_auth_uri = f"{identity_endpoint}?resource={resource_uri}&api-version=2019-08-01"
    head_msi = {'X-IDENTITY-HEADER':identity_header}

    resp = requests.get(token_auth_uri, headers=head_msi)
    resp.raise_for_status() # 增加请求异常捕获,避免令牌获取失败时报错不明确
    access_token = resp.json()['access_token']

    return access_token

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:18:03