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
相关产品推荐
相关产品推荐

