气流:使用环境变量时未创建连接
Airflow: connection is not being created when using environment variables
我想在不使用 Airflow UI 的情况下创建 Mongo 连接(默认情况除外)。
Connections in Airflow pipelines can be created using environment
variables. The environment variable needs to have a prefix of
AIRFLOW_CONN_ for Airflow with the value in a URI format to use the
connection properly.
When referencing the connection in the Airflow pipeline, the conn_id
should be the name of the variable without the prefix. For example, if
the conn_id is named postgres_master the environment variable should
be named AIRFLOW_CONN_POSTGRES_MASTER (note that the environment
variable must be all uppercase).
我在使用 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
连接。
有什么建议吗?谢谢!
我读了 Puckel issue,他们提到连接已创建,但未显示在 UI 中。我对其进行了测试,实际上在 DAG 中使用时连接有效。
当您使用环境变量创建连接时,连接不会列在 UI 中。
原因:
- Airflow 支持通过环境变量为 DAG 中的临时作业创建连接
- UI 中的连接实际上保存在数据库中并从中检索。由 Env vars 创建的那些不存储在 DB
如何测试我的连接?
- 创建示例 DAG 并使用您的连接到 运行 示例作业。它应该可以正常工作。
我想在不使用 Airflow UI 的情况下创建 Mongo 连接(默认情况除外)。
Connections in Airflow pipelines can be created using environment variables. The environment variable needs to have a prefix of AIRFLOW_CONN_ for Airflow with the value in a URI format to use the connection properly.
When referencing the connection in the Airflow pipeline, the conn_id should be the name of the variable without the prefix. For example, if the conn_id is named postgres_master the environment variable should be named AIRFLOW_CONN_POSTGRES_MASTER (note that the environment variable must be all uppercase).
我在使用 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
连接。
有什么建议吗?谢谢!
我读了 Puckel issue,他们提到连接已创建,但未显示在 UI 中。我对其进行了测试,实际上在 DAG 中使用时连接有效。
当您使用环境变量创建连接时,连接不会列在 UI 中。
原因:
- Airflow 支持通过环境变量为 DAG 中的临时作业创建连接
- UI 中的连接实际上保存在数据库中并从中检索。由 Env vars 创建的那些不存储在 DB
如何测试我的连接?
- 创建示例 DAG 并使用您的连接到 运行 示例作业。它应该可以正常工作。