首页/数据/数据工程与 ETL 速查/Airflow Connections 连接管理

Airflow Connections 连接管理

Connections 集中保存数据库、API 等外部系统的连接信息,DAG 里只引用 conn_id,凭据不落代码;可在界面、环境变量或 CLI 维护,生产建议接 Secrets Backend。

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。

易错点

  • conn_id 在不同环境指向不同库,切环境时忘记确认,任务写进了错误的数据库
  • 连接信息更新后 worker 未刷新缓存,任务仍在用旧配置,排查时越查越迷惑
  • DAG 代码里写明文密码,凭据随版本库扩散,轮换时无法彻底收回
  • 只在界面维护连接且没有变更记录,出问题后无法追溯是谁改的

数据来源与参考

  • Apache Airflow 官方文档:Managing Connections
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌