Variable

Airflow Variable (변수)는 임의의 값 또는 설정을 Airflow 내에서 간단한 Key-Value pair로 저장하고 모든 DAG에서 사용할 수 있는 일반적인 방법입니다. 변수는 Airflow UI에서 생성, 업데이트 및 삭제할 수 있습니다. 또한 Airflow UI를 통해 JSON 파일을 업로드 하여 변수를 일괄로 생성할 수도 있습니다. Airflow UI에서 변수를 생성하고 DAG에서 사용하는 방법을 실습해 보겠습니다.

  1. Airflow UI 에서 Admin->Variable 화면으로 이동 하십시오. Variable

  2. (+) 버튼을 클릭하여 변수를 생성 하십시오. Variable

  3. Key-Value 값을 입력하고 저장 버튼을 클릭 하십시오. Variable

  4. 다음 화면과 같이 변수가 생성 되었습니다. Variable

  5. Airflow UI에 생성 한 변수를 DAG 에서 사용해 보겠습니다. Cloud9 workspace에서 다음 스크립트를 copy/paste 하여 variable_DAG.py 파일을 dags 폴더에 생성하십시오.

# The DAG object; we'll need this to instantiate a DAG
from airflow import DAG

# Operators; we need this to operate!
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago
from airflow.models import Variable

default_args = {
    "owner": "airflow",
    "start_date": days_ago(1),
}

dag = DAG(
    "variable_DAG", 
    default_args=default_args, 
    schedule_interval=None
)

t1 = BashOperator(
    task_id="s3_airflow_dag_path", 
    bash_command="echo {{var.value.s3_airflow_dag_path}}", 
    dag=dag
)
  1. DAG 스크립트에서 Airflow UI 변수를 사용하려면 먼저 Variable 라이브러리를 Import 해야 하고 {{var.value.«variable_key_name»}}을 참조하는 방식으로 변수의 값을 조회 할 수 있습니다. Variable

  2. 새로 작성 된 DAG를 Airflow S3 bucket의 dags 폴더로 업로드 하십시오. Cloud9 workspace의 terminal에서 다음 AWS CLI 명령어를 실행하여 DAG 파일을 S3로 업로드 하십시오.

CLI를 실행하기 전에 <your_aws_account_id> 문구는 현재 사용하고 있는 12자리 AWS Account ID로 변경해야 합니다.

cd ~/environment/dags
ls
aws s3 sync . s3://mwaa-workshop-<your_aws_account_id>/dags/

Variable

  1. Airflow UI를 reload 하면 variable_DAG가 DAG 목록에 나타납니다.

Airflow 환경의 DAG 동기화 주기로 인해 바로 나타나지 않을 수 있으니 Airflow UI를 여러 번 reload 해 보십시오.

Variable

  1. Graph View로 가서 toggle switch 상태를 On으로 변경하고 수동으로 DAG를 트리거 하십시오.

v1.10.12: Variable Variable

v2.0.2: Variable

  1. Graph View에서 작업을 선택하고 View Log를 클릭하십시오. Log View에서 echo 명령어를 실행하여 출력 된 변수 값을 확인해 보십시오. Variable Variable

이와 같은 방법으로 작업의 필요한 변수를 DAG 스크립트에 하드코딩하지 않고도 Airflow UI를 통해 쉽게 변경 및 관리할 수 있습니다.