气流:使用环境变量时未创建连接

ita*_*ind 1 airflow airflow-scheduler

我想在不使用 Airflow UI 的情况下创建 Mongo 连接(默认除外)。

我从气流文档中读到:

可以使用环境变量创建 Airflow 管道中的连接。环境变量需要有一个AIRFLOW_CONN_ 前缀,用于Airflow,其值为URI 格式才能正确使用连接。

在 Airflow 管道中引用连接时,conn_id 应该是不带前缀的变量名称。例如,如果 conn_id 命名为 postgres_master,则环境变量应命名为 AIRFLOW_CONN_POSTGRES_MASTER(注意环境变量必须全部大写)。

我尝试在使用Puckel docker image时应用它。

这是使用该图像的 docker compose:

version: '2.1'
 services:
    postgres:
        image: postgres:9.6
        environment:
            - POSTGRES_USER=airflow
            - POSTGRES_PASSWORD=airflow
            - POSTGRES_DB=airflow

    webserver:
        image: puckel/docker-airflow:1.10.6
        restart: always
        depends_on:
            - postgres
        environment:
            - LOAD_EX=n
            - EXECUTOR=Local
            - AIRFLOW_CONN_MY_MONGO=mongodb://mongo:27017
        volumes:
            - ./src/:/usr/local/airflow/dags
            - ./requirements.txt:/requirements.txt
        ports:
            - "8080:8080"
        command: webserver
        healthcheck:
            test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
            interval: 30s
            timeout: 30s
            retries: 3
Run Code Online (Sandbox Code Playgroud)

请注意AIRFLOW_CONN_MY_MONGO=mongodb://mongo:27017我按照 Airflow 文档的建议传递环境变量的行。

这里的问题是my_mongo当我在 UI 中列出连接时没有创建连接。

有什么建议吗?谢谢!

kax*_*xil 6

使用环境变量创建连接时,该连接不会在 UI 中列出。

原因

  • Airflow 支持通过环境变量为 DAG 中的临时作业创建连接
  • UI 中的连接实际上保存在 DB 中并从中检索。由环境变量创建的不存储在数据库中

如何测试我的连接?

  • 创建示例 DAG 并使用您的连接运行示例作业。它应该可以正常工作。