Connections 解决什么问题
Airflow Connections 集中保存数据库、API、消息队列等外部系统的连接信息,DAG 里只引用 conn_id,凭据不落在代码中。连接可以在界面维护、用环境变量注入,也可以通过 CLI 添加;生产环境更推荐接入 Secrets Backend(如 Vault 或云厂商密钥服务),让凭据由专门的系统管理并支持定期轮换。
基本信息
| 引用方式 | conn_id,例如 mysql_dw |
|---|---|
| 权限控制 | 连接可配置团队与角色的可见性 |
| 密码存储 | 元数据库中加密存储,或交由外部密钥后端 |
| 环境变量注入 | AIRFLOW_CONN_<CONN_ID> 传连接 URI |
典型使用场景
- 多环境隔离:同一个 conn_id 在测试与生产指向不同库
- 凭据集中管理:接 Secrets Backend,支持轮换与审计
- 连接复用:多个 DAG 共用同一连接,改一处即可全局生效
- 权限收敛:按团队限制可见的连接,避免越权访问
- 临时排查:用 CLI 添加连接验证连通性,排查完及时清理
CLI 管理连接
CLI 管理连接
airflow connections add mysql_dw \
--conn-type mysql \
--conn-host 10.0.0.10 --conn-port 3306 \
--conn-login etl --conn-password '***'
airflow connections list # 查看已配置连接,密码不显示明文环境变量方式
环境变量方式
# 环境变量注入,适合容器化部署与密钥管理系统下发
export AIRFLOW_CONN_MYSQL_DW='mysql://etl:***@10.0.0.10:3306/dw'连接管理方式与风险
| 做法 | 优点 | 风险 |
|---|---|---|
| 界面维护 | 直观,无需改代码 | 多人协作时容易改错,缺少审计 |
| 环境变量注入 | 适配容器与密钥注入 | 变量名拼错时连接缺失,报错不直观 |
| Secrets Backend | 支持轮换与集中审计 | 需要额外部署与权限规划 |
| 代码内明文 | 最省事 | 凭据进版本库,评审必然扣分 |
DAG 代码里出现明文密码是代码评审的常见扣分项:统一用 conn_id 配合环境变量或密钥后端,凭据就不会随代码扩散到各处。
conn_id 在不同环境指向不同数据库,切环境时忘记确认连接就会写进错误的库;上线前应把「conn_id 到实际地址」的对应关系显式核对一遍。
连接里除了地址与凭据,还可以放额外参数(extra),例如脚本路径、服务账号、区域等信息;这些参数同样会存在元数据库,涉及密钥的字段应交给 Secrets Backend 管理,不要顺手写进 extra。