Airflow DAG 작성

PH_Lee·2024년 5월 24일

airflow.cfg

1. DAGs 폴더는 어디에 지정되는가?

a. 기본적으로는 Airflow가 설치된 디렉토리 밑의 dags 폴더가 되며 dags_folder 키에 저장됨

2. DAGs 폴더에 새로운 Dag를 만들면 언제 실제로 Airflow 시스템에서 이를 알게되나? 이 스캔 주기를 결정해주는 키의 이름이 무엇인가?

a. dag_dir_list_interval (기본값은 300 = 5분)

3. 이 파일에서 Airflow를 API 형태로 외부에서 조작하고 싶다면 어느 섹션을 변경해야하는가?

a. api 섹션의 auth_backend를 airflow.api.auth.backend.basic_auth로 변경

4. Variable에서 변수의 값이 encrypted가 되려면 변수의 이름에 어떤 단어들이 들어가야 하는데 이 단어들은 무엇일까? :)

a. password, secret, passwd, authorization, api_key, apikey, access_token

5. 이 환경 설정 파일이 수정되었다면 이를 실제로 반영하기 위해서 해야 하는 일은?

a. sudo systemctl restart airflow-webserver
b. sudo systemctl restart airflow-scheduler

6. Metadata DB의 내용을 암호화하는데 사용되는 키는 무엇인가?

a. fernet_key

Airflow와 타임존

airflow.cfg에는 두 종류의 타임존 관련 키가 존재

a. default_timezone
b. default_ui_timezone

start_date, end_date, schedule

a. default_timezone에 지정된 타임존을 따름

execution_date와 로그 시간

a. 항상 UTC를 따름
b. 즉 execution_date를 사용할 때는 타임존을 고려해서 변환후 사용필요

현재로 가장 좋은 방법은 UTC를 일관되게 사용하는 것으로 보임

dags 폴더에서 코딩시 작성한다면 주의할 점

  • Airflow는 dags 폴더를 주기적으로 스캔함
[core]
 dags_folder = /var/lib/airflow/dags
 # How often (in seconds) to scan the DAGs directory for new files. Default to 5 minutes.
 dag_dir_list_interval = 300
  • 이때 DAG 모듈이 들어있는 모든 파일들의 메인 함수가 실행이 됨
  • 이 경우 본의 아니게 개발 중인 테스트 코드도 실행될 수 있음
from airflow import DAG
 …
 cur.execute(“DELETE FROM ….”)
profile
새싹 개발자

0개의 댓글