MWAA中DAG加载自定义配置文件失败问题求助
MWAA加载配置文件失败的原因与解决办法
问题根源
- 导入
utils.s3_manager正常是因为Python的sys.path默认包含了MWAA挂载的/usr/local/airflow/dags目录,模块查找会遍历这个路径,所以能定位到utils目录下的模块。 - 但用相对路径
./config/{dag_name}/config_dtype.json加载文件时,MWAA执行DAG的当前工作目录是/usr/local/airflow,而非dags子目录,实际查找路径变成了/usr/local/airflow/config/...,但你的配置文件实际存放在/usr/local/airflow/dags/config/...,因此触发文件不存在错误。
解决办法
最稳妥的方式是基于当前DAG文件的实际位置构造配置路径,避免依赖工作目录的不确定性:
import os from pathlib import Path from omegaconf import OmegaConf # 获取当前DAG脚本所在的目录 dag_file_dir = Path(__file__).parent # 拼接配置文件的完整路径 conf_path = dag_file_dir / "config" / dag_name / "config_dtype.json" # 加载配置文件 conf_device_info = OmegaConf.load(conf_path)
补充说明
Path(__file__)可以精准获取当前DAG脚本的绝对路径,无论工作目录如何变化,都能定位到同目录下的config文件夹。- 也可以直接写死绝对路径
/usr/local/airflow/dags/config/{dag_name}/config_dtype.json,但硬编码路径会降低代码可移植性,不推荐使用。
内容的提问来源于stack exchange,提问作者Hoon
相关产品推荐
相关产品推荐

