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

FastAPI部署至Azure Web App后访问环境变量的方法及本地开发管理方案咨询

FastAPI部署至Azure Web App后访问环境变量的方法及本地开发管理方案咨询

嗨,我来帮你搞定这个问题!把FastAPI部署到Azure Web App后,不管是线上访问环境变量,还是本地开发时管理这些变量,都有很顺畅的方案,结合你现有的代码我给你一步步说清楚:

一、Azure Web App线上环境访问环境变量

完全没问题,Azure会把你配置的应用设置自动注入到应用的系统环境中,你只需要这么做:

  1. 在Azure门户设置环境变量
    登录Azure门户,找到你的Web App,进入「配置」→「应用程序设置」,点击「新建应用程序设置」,添加你需要的键值对(比如AZURE_CLIENT_ID、AZURE_TENANT_ID这类),保存后记得重启Web App让设置生效。

  2. 在FastAPI里优雅读取(结合你的Pydantic Settings)
    你已经在用Pydantic的Settings类了,这刚好是管理配置最推荐的方式!只需要修改你的Settings类,让它直接从环境变量读取字段:

    # 注意:现在Pydantic推荐用pydantic-settings库的BaseSettings,如果你还没装,先执行 `pip install pydantic-settings`
    from pydantic_settings import BaseSettings
    from pydantic import AnyHttpUrl
    
    class Settings(BaseSettings):
        # 字段名对应Azure里设置的环境变量键名
        azure_client_id: str
        azure_tenant_id: str
        azure_scopes: str  # 比如设置成"api://xxx/access_as_user"
        backend_cors_origins: list[AnyHttpUrl] = []
    
        class Config:
            env_file = ".env"  # 本地开发时读取这个文件,后面会说
    
    settings = Settings()
    

    之后在你的代码里,就可以直接用settings.azure_client_id、settings.azure_tenant_id来访问这些变量了,比如你的azure_scheme可以改成:

    azure_scheme = SingleTenantAzureAuthorizationCodeBearer(
        app_client_id=settings.azure_client_id,
        tenant_id=settings.azure_tenant_id,
        scopes=settings.azure_scopes,
    )
    

    如果你偶尔需要直接读取单个环境变量,也可以用os.getenv("YOUR_VAR_NAME"),但用Settings类更结构化,还能自动做类型校验,推荐优先用前者。

二、本地开发时的环境变量管理

本地开发时总不能每次启动都手动设置系统环境变量,我们用.env文件来统一管理:

  1. 创建.env文件
    在你的项目根目录创建一个.env文件,内容是键值对格式,和Azure上的变量名保持一致:

    AZURE_CLIENT_ID=你的本地测试用客户端ID
    AZURE_TENANT_ID=你的租户ID
    AZURE_SCOPES=api://你的测试API/access_as_user
    BACKEND_CORS_ORIGINS=["http://localhost:3000", "http://localhost:8000"]
    
  2. 让Settings读取.env文件
    刚才的Settings类里已经加了env_file = ".env",Pydantic会自动优先读取系统环境变量,找不到的话再从.env文件里读。这样本地开发时用.env的配置,部署到Azure后会自动用Azure上的环境变量,完美兼容!

  3. 重要提醒
    一定要把.env文件加到.gitignore里,别提交到代码仓库,避免把敏感信息(比如客户端ID、租户ID)泄露出去。

这样不管是线上Azure环境还是本地开发,环境变量的管理都清晰又安全啦!

备注:内容来源于stack exchange,提问作者Thomas Segato

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:49:35