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

时间:2020-01-09 17:33:24

标签: airflow airflow-scheduler

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

我从Airflow documentation阅读:

可以使用环境在气流管道中创建连接 变量。环境变量必须具有前缀 AIRFLOW_CONN_(用于Airflow),其值采用URI格式以使用 连接正确。

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

我尝试在使用Puckel docker image时应用此方法。

这是使用该镜像的docker组合:

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

请注意AIRFLOW_CONN_MY_MONGO=mongodb://mongo:27017行,正如Airflow文档所建议的那样,我在其中传递环境变量。

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

有什么建议吗?谢谢!

2 个答案:

答案 0 :(得分:3)

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

原因

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

如何测试我的连接?

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

答案 1 :(得分:0)

我读了一个Puckel issue,他们提到创建了连接,但未在UI中显示该连接。我对其进行了测试,并且实际上在DAG中使用时,该连接可以正常工作。