Airflow 1.10.11(EC2 Docker-Compose部署)配置及导出问题咨询
关于Bitnami Docker Compose部署的Airflow 1.10.11的配置与数据管理
一、获取完整配置信息
你已经知道scheduler容器内的/opt/bitnami/airflow/airflow.cfg是核心配置文件,补充以下获取完整配置的方法:
- 检查docker-compose.yml中的环境变量:Bitnami的Airflow镜像会用
AIRFLOW_前缀的环境变量覆盖cfg文件的配置项,这些变量是配置的重要组成部分 - 导出容器内的完整配置文件到EC2本地:
docker exec -it <你的airflow-scheduler容器名> cat /opt/bitnami/airflow/airflow.cfg > airflow-local.cfg - 导出容器内的Airflow相关环境变量:
docker exec -it <你的airflow-scheduler容器名> env | grep AIRFLOW_ > airflow-env-vars.txt - 如果docker-compose配置了外部卷挂载,检查EC2本地对应的挂载目录,可能有持久化的配置文件备份
二、Connections、Variables、XCom的存储位置
这些数据默认存储在Airflow的元数据库中,并非某个容器的本地文件。在Bitnami的Docker Compose部署方案中,元数据库通常是独立的postgres容器(具体看你的docker-compose.yml中的数据库服务定义),数据会通过卷持久化到EC2本地磁盘。
只要是能正常连接到元数据库的Airflow服务容器(scheduler、webserver、worker均可),都可以执行数据导出命令。
三、数据导出操作方法
1. Connections导出
airflow connections export命令需要在能访问元数据库的Airflow容器CLI中执行,推荐用scheduler容器:
- 进入scheduler容器:
docker exec -it <你的airflow-scheduler容器名> bash - 执行导出命令:
airflow connections export connections.json - 将导出的文件复制到EC2本地:
docker cp <你的airflow-scheduler容器名>:/opt/bitnami/airflow/connections.json ./
2. Variables导出(含加密变量)
加密变量依赖airflow.cfg中的fernet_key解密,只要在配置了正确key的容器中执行导出,就能得到明文变量:
- 进入scheduler容器后执行导出:
airflow variables export variables.json - 复制文件到EC2本地:
docker cp <你的airflow-scheduler容器名>:/opt/bitnami/airflow/variables.json ./
注意:如果在没有正确
fernet_key的环境执行导出,加密变量会显示为密文,无法直接使用。
3. XCom导出
可以通过Airflow CLI或直接查询元数据库导出:
- CLI方式(在scheduler容器中执行):
# 导出指定DAG和Task的XCom数据 airflow xcom list --task-id <目标任务ID> --dag-id <目标DAG ID> --output json > xcom-data.json - 批量导出(通过postgres容器):
- 进入postgres容器:
docker exec -it <你的airflow-postgres容器名> psql -U <Airflow数据库用户名> -d <Airflow数据库名> - 执行SQL导出到CSV:
COPY (SELECT * FROM xcom) TO '/tmp/xcom.csv' WITH CSV HEADER; - 复制文件到EC2本地:
docker cp <你的airflow-postgres容器名>:/tmp/xcom.csv ./
- 进入postgres容器:
四、注意事项
- 执行导出前确保目标容器处于运行状态,且能正常连接元数据库
- 导出的文件包含敏感信息,需妥善保管
- 如果你的Airflow使用外部数据库(比如AWS RDS),数据存储在外部服务中,需通过对应数据库的导出工具操作
内容的提问来源于stack exchange,提问作者Kelvin Chow
相关产品推荐
相关产品推荐

