컨테이너·워크플로우 자동화/Airflow로 워크플로우 자동화하기

Airflow PythonOperator에서 params로 값을 전달하고 함수에서 사용하는 방법

Data Jun 2026. 2. 3. 13:25

Airflow에서 태스크를 구성하다 보면,
DAG 설정 값(DB URI, 경로, 옵션 등)을 파이썬 함수 안에서 사용하고 싶은 경우가 자주 발생합니다.
이때 가장 깔끔한 방법이 바로 params를 사용하는 방식입니다.

 

핵심은 단순합니다.
DAG에서 params로 값을 주고, 실행 함수에서는 context["params"]로 받는다는 구조입니다.

 

아래와 같이 PythonOperator에서 params를 정의합니다.

write_log = PythonOperator(
    task_id="write_ingest_log",
    python_callable=write_ingest_log,
    trigger_rule="all_done",
    params={"conn_uri": ETL_DB_URI},
)

여기서 params는
DAG가 실행 시점에 파이썬 함수로 전달하는 설정 가방이라고 보면 됩니다.

 

그리고 실행 함수에서는 **context를 통해 이 값을 꺼내 씁니다.

def write_ingest_log(**context):
    conn_uri = context["params"]["conn_uri"]

이렇게 하면 ETL_DB_URI 값이
함수 파라미터로 직접 전달되지 않았음에도 안전하게 사용됩니다.

 

이를 비유하면,
함수는 호출될 때 명시적으로 전달된 인자뿐 아니라
**Airflow가 함께 건네준 설정 봉투(context)**도 함께 받는 구조입니다.
params는 그 봉투 안에 들어 있는 설정 항목인 셈입니다.

 

이 방식의 장점은 분명합니다.
전역 상수에 의존하지 않고,
DAG 단위로 설정을 명확하게 주입할 수 있다는 점입니다.
특히 환경별(DB, 경로, 옵션)로 값이 달라질 수 있는 경우에 매우 유용합니다.

 

PythonOperator에서 params로 전달한 값은 실행 함수에서 context["params"]로 받아 사용할 수 있으며, DAG 설정을 명시적으로 주입하는 가장 깔끔한 방식이다.