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

Airflow升级2.3.2后忽略fernet_key配置致加密变量解密失败

根因说明

仅Webserver服务加载了包含Fernet Key的环境配置,Scheduler服务、执行CLI命令的Shell会话均未读取到有效配置,和Airflow 2.3.2版本本身的逻辑无关:

  • 你配置的airflow-webserver.service中明确指定了EnvironmentFile=/etc/airflow/secrets.txt,因此Webserver进程可以正常读取Fernet Key,前端配置页自然显示参数正常。
  • 手动执行airflow variables类CLI命令时,当前终端会话没有注入AIRFLOW__CORE__FERNET_KEY环境变量,也未正确加载airflow.cfg中的硬编码配置,因此触发解密失败报错。
  • 如果Scheduler通过独立systemd单元管理,且单元配置中没有添加和Webserver一致的环境文件、AIRFLOW_HOME路径配置,Scheduler运行DAG时同样读不到Fernet Key,会抛出和CLI完全一致的错误。
排查与修复步骤
  • 验证CLI环境配置加载状态
    在执行Airflow CLI命令的终端中,先确认环境变量与配置路径正确:

    # 先指定和服务一致的AIRFLOW_HOME路径
    export AIRFLOW_HOME=/etc/airflow
    # 检查当前实际加载到的Fernet Key值
    airflow config get-value core fernet_key
    

    如果命令返回空值,说明当前环境未加载到有效配置,手动加载环境文件后再验证:

    set -a
    source /etc/airflow/secrets.txt
    set +a
    airflow config get-value core fernet_key
    

    此时如果返回正确的Key值,再执行airflow variables list -v就不会出现Fernet Key缺失的报错,可正常查看变量明文。

  • 修复Scheduler服务配置
    找到airflow-scheduler.service的systemd单元文件,在[Service]段添加和Webserver完全一致的环境配置:

    EnvironmentFile=/etc/airflow/secrets.txt
    Environment="AIRFLOW_HOME=/etc/airflow"
    User=airflow
    Group=airflow
    

    其余原有配置保持不变,修改后重载配置并重启服务:

    systemctl daemon-reload
    systemctl restart airflow-scheduler
    
  • 排查cfg硬编码不生效问题
    如果将Fernet Key写入airflow.cfg后仍无法正常读取,优先检查两点:

    • 文件权限:运行Airflow服务的airflow用户、执行CLI命令的用户必须对/etc/airflow/airflow.cfg拥有读权限
    • 配置位置:fernet_key配置项必须写在[core]分段下,配置行前不能加#注释符,不要写错分段名称

    配置加载优先级:环境变量 > airflow.cfg > 默认值,不要在环境变量和cfg文件中配置不同的Fernet Key,否则会出现加解密不匹配问题。

  • 修复验证

    1. CLI侧执行airflow variables list -v,确认无Fernet Key缺失报错,可正常展示加密变量的明文值
    2. 手动触发依赖加密变量的DAG,确认任务运行正常,日志中无解密相关错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:25:34