如何在AWS Airflow MWAA上使用airflow-code-editor等DAG编辑插件
问题根因
AWS MWAA 运行环境默认做了只读文件系统限制,仅/usr/local/airflow/dags、/usr/local/airflow/logs、/tmp三个路径开放写权限,其余系统路径、Airflow安装路径全部为只读挂载。airflow-code-editor、simple-dag-editor两个插件默认会将运行时缓存、临时文件、Git仓库数据、插件后端服务文件写到非授权可写路径,因此会直接触发Read-only file system报错,原生未修改的插件版本无法直接在MWAA环境运行。
可行方案
方案1:修改插件配置适配MWAA路径规则(仅支持基础编辑功能)
通过配置重定向把插件所有写操作全部引导到MWAA允许的可写路径,可实现基础DAG编辑能力:
- 提前在MWAA启动脚本
startup.sh中创建专用缓存目录,避免权限报错:mkdir -p /usr/local/airflow/dags/_editor_tmp chmod 755 /usr/local/airflow/dags/_editor_tmp - 安装插件后在MWAA的Airflow配置覆盖项中添加对应配置:
针对airflow-code-editor:
针对simple-dag-editor,将插件配置项中的[code_editor] root_directory = /usr/local/airflow/dags git_repo_dir = /tmp/code_editor_git temp_directory = /usr/local/airflow/dags/_editor_tmpcache_dir、temp_parse_dir全部指向/usr/local/airflow/dags/_editor_tmp路径即可。 - 该方案存在硬限制:MWAA会定时从绑定的S3存储桶同步DAG目录,界面编辑保存到本地的文件如果未手动同步到S3,会在节点轮换、环境重启时丢失;插件自带的Web终端、在线Git同步、实时依赖安装功能会因为系统权限限制无法正常使用。
方案2:对接S3存储实现无本地写入的编辑能力(稳定性最高)
不依赖第三方插件的本地文件写入逻辑,自定义轻量编辑插件对接MWAA绑定的DAG源S3桶:
- 前端直接集成通用代码编辑器组件做代码编辑交互,后端逻辑调用AWS SDK直接读写S3桶内的DAG文件,保存后自动触发MWAA的DAG同步流程,全程不写入本地文件系统,完全规避只读权限问题。
- 也可以直接使用AWS控制台原生提供的Cloud9关联编辑能力,本质也是直接修改S3存储的DAG源文件,链路稳定不会出现文件丢失。
方案3:全功能使用场景建议更换部署形态
MWAA的只读文件系统是平台层面的强管控限制,没有提权绕过的可能。如果必须使用两个插件自带的终端操作、Git仓库管理、在线调试等全量功能,只能迁移到ECS/EKS自建Airflow集群,或选择无文件系统写限制的其他托管Airflow服务。
内容的提问来源于stack exchange,提问作者Hugo
相关产品推荐
相关产品推荐

