airflow docker-compose.yml 中的连接管理根本不起作用?

Connection management in airflow docker-compose.yml doesn't work at all?

根据airflow connection management page,我们可以使用环境变量来创建连接:

export AIRFLOW_CONN_MY_PROD_DATABASE='my-conn-type://login:password@host:port/schema?param1=val1&param2=val2'

所以,我下载了官方docker-compose.yml:

$ curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.2.0/docker-compose.yaml'

并添加如下连接的环境变量:

...

 47   image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.2.0}
 48   # build: .
 49   environment:
 50     &airflow-common-env
 51     AIRFLOW_CONN_MY_PROD_DB: my-conn-type://login:password@host:port/schema?param1=val1&param2=val2
 52     AIRFLOW__CORE__EXECUTOR: CeleryExecutor

...

然后,我使用 docker-compose up 加载所有容器并可以访问 airflow-worker 服务:

$ docker-compose exec airflow-worker /bin/bash

并查看所有连接列表:

airflow@52d9c6ab9309:/opt/airflow$ airflow connections list

但是它说:

No data found

我是不是漏掉了什么?

Airflow 仅列出来自底层 Metastore 的连接。因此,来自环境变量或不同机密后端(例如 Vault)的连接将不会显示在 CLI 的 Airflow UI/listed 中。

要检查连接是否有效,您可以打开 Python 终端并 运行:

from airflow.hooks.base import BaseHook
conn = BaseHook.get_connection("my_prod_db")

# now you can print e.g. print(conn.host)