.airflowignore
Airflow가 무시해야 하는 DAG_FOLDER 내 디렉터리, 파일을 지정하는 설정 파일
.airflowignore 파일의 각 행은 정규 표현식 패턴을 지정하며, DAG id가 아니라 디렉터리나 파일의 이름이 패턴과 일치하는 경우 무시된다. .gitignore와 비슷하게 생각하면 된다.
경로
.airflowignore는 DAG_FOLDER 또는 그 하위 폴더에 위치해야 한다. 이 글의 경우, dag_folder는 다음과 같다.
## airflow.cfg
[core]
# The folder where your airflow pipelines live, most likely a
# subfolder in a code repository. This path must be absolute.
dags_folder = /home/airflow/airflow/dags
따라서 .airflowignore는 /home/airflow/airflow/dags/ 또는 그 하위 경로 아래에 위치해야 한다.
다만 .airflowignore 파일의 범위(scope)가 파일이 존재하는 디렉터리와 그 하위 폴더이므로, 하위 디렉터리인 /home/airflow/airflow/dags/ignore_dags 아래에 .airflowignore 파일이 존재하는 경우 /home/airflow/airflow/dags/에 위치한 DAG 정의 파일은 패턴이 일치해도 무시되지 않는다.
이 글에서는 .airflwignore가 어떻게 동작하는지 테스트해보려고 한다.
테스트 디렉터리 구조 및 DAG 목록
DAG_FOLDER와 하위 디렉터리에 dag_ 로 시작하는 DAG 정의 파일을 생성해두었다.
각 DAG 정의 파일에 의해 생성된 DAG 목록은 아래와 같다.
airflow dags list | grep dag_ | grep -v home
DAG_FOLDER/.airflowignore
1. 파일 무시
dag_ignoretest.py라는 이름의 DAG 정의 파일을 무시하려고 한다.
DAG_FOLDER에 아래의 내용으로 .airflowignore 파일을 생성했다.
## DAG_FOLDER/dags/.airflowignore
ignoretest
airflow cli로 DAG 목록을 확인해보면 하위 디렉터리를 포함하여 패턴에 일치한 dag_ignoretest.py 파일이 전부 무시된 것을 확인할 수 있다.
2. 하위 디렉터리 무시
ignore_ 로 시작하고 추가적인 문자를 포함한 디렉터리(ignore_*/) 내 DAG 정의 파일을 전부 무시하려고 한다.
.airflowignore는 정규식 패턴을 지원하므로 다음과 같이 설정할 수 있다.
## DAG_FOLDER/dags/.airflowignore
ignore_[a-zA-Z0-9]+/
설정 이후 DAG 목록은 다음과 같다.
참고로 하위 디렉터리를 무시하려고 할 때 /를 붙이지 않으면 동일 디렉터리 내에 위치하면서 패턴에 일치하는 DAG 정의 파일(예: DAG_FOLDER/ingore_a.py)도 무시된다.
DAG_FOLDER/sub_dir/.airflowignore
DAG_FOLDER의 하위 디렉터리인 ignore_dags 아래에 위치한 dag_ignoretest.py만 무시하고자 한다.
DAG_FOLDER/ignore_dags에 아래의 내용으로 .airflowignore 파일을 생성했다.
## DAG_FOLDER/dags/ignore_dags/.airflowignore
ignoretest
설정 이후 DAG 목록을 확인해보면 다른 디렉터리에 위치한 dag_ignoretest.py는 무시되지 않은 모습을 확인할 수 있다.
참고 문서
https://airflow.apache.org/docs/apache-airflow/1.10.1/concepts.html#airflowignore
https://airflow.apache.org/docs/apache-airflow/stable/concepts/dags.html