반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

지구정복

[Airflow] Airflow REST API 사용 본문

데이터 엔지니어링 정복/Airflow

[Airflow] Airflow REST API 사용

noohhee 2026. 9. 29. 13:50
728x90
반응형

  • 1. API 사용
    • 1.1. DAG관련
    • 1.2. Task 관련
    • 1.3. Connections & Variables
    • 1.4. 로그 관련

 

 

1. API 사용

다음과 같은 형식으로 사용 가능

  • 버전 정보 출력
curl -X GET "http://<your_airflow_server>:<airflow port>/api/v1/version" \
     -u "username:password"

 

 

1.1. DAG관련

  • 목록
curl -X GET "http://<your_airflow_server>:8080/api/v1/dags" \
     -u "username:password"

 

  • 특정 DAG 정보 조회
curl -X GET "http://<your_airflow_server>:8080/api/v1/dags/<dag_id>" \
     -u "username:password"

 

  • 특정 DAG 비/활성화
curl -X PATCH "http://<your_airflow_server>:8080/api/v1/dags/<dag_id>" \
     -H "Content-Type: application/json" \
     -u "username:password" \
     -d '{"is_paused": false}'  # 활성화

 

  • 특정 DAG 수동으로 트리거
curl -X POST "http://<your_airflow_server>:8080/api/v1/dags/<dag_id>/dagRuns" \
     -H "Content-Type: application/json" \
     -u "username:password" \
     -d '{"dag_run_id": "manual_trigger_1", "conf": {"key": "value"}}'


#conf는 넘겨줄 변수가 있으면 선언가능. 없으면 아래처럼
curl -X POST "http://<your_airflow_server>:8080/api/v1/dags/<dag_id>/dagRuns" \
     -H "Content-Type: application/json" \
     -u "username:password" \
     -d '{"dag_run_id": "manual_trigger_1", "conf": {}}'

 

  • 실행중인 특정 DAG 취소
curl -X DELETE "http://<your_airflow_server>:8080/api/v1/dags/<dag_id>/dagRuns/<dag_run_id>" \
     -u "username:password"

 

 

1.2. Task 관련

  • 특정 DAG의 task목록 조회
curl -X GET "http://<your_airflow_server>:8080/api/v1/dags/<dag_id>/dagRuns/<dag_run_id>/taskInstances" \
     -u "username:password"

 

  • 특정 DAG의 특정 task 정보 조회
curl -X GET "http://<your_airflow_server>:8080/api/v1/dags/<dag_id>/dagRuns/<dag_run_id>/taskInstances/<task_id>" \
     -u "username:password"

 

  • 특정 DAG의 실패되거나 스킵된 task들만 재실행
curl -X POST "http://<your_airflow_server>:8080/api/v1/dags/<dag_id>/dagRuns/<dag_run_id>/taskInstances/<task_id>/clear" \
     -H "Content-Type: application/json" \
     -u "username:password" \
     -d '{"reset_dag_runs": false, "only_failed": true}'

 

 

1.3. Connections & Variables

  • connection들 조회
curl -X GET "http://<your_airflow_server>:8080/api/v1/connections" \
     -u "username:password"

 

  • connection추가
curl -X POST "http://<your_airflow_server>:8080/api/v1/connections" \
     -H "Content-Type: application/json" \
     -u "username:password" \
     -d '{
           "connection_id": "my_connection",
           "conn_type": "http",
           "host": "example.com",
           "port": 80
         }'

 

  • 변수 조회
curl -X GET "http://<your_airflow_server>:8080/api/v1/variables" \
     -u "username:password"

 

  • 변수 추가 및 업데이트
curl -X POST "http://<your_airflow_server>:8080/api/v1/variables" \
     -H "Content-Type: application/json" \
     -u "username:password" \
     -d '{"key": "my_variable", "value": "my_value"}'

 

  • 변수 삭제
curl -X DELETE "http://<your_airflow_server>:8080/api/v1/variables/my_variable" \
     -u "username:password"

 

1.4. 로그 관련

  • 특정 task의 로그 조회
curl -X GET "http://<your_airflow_server>:8080/api/v1/dags/<dag_id>/dagRuns/<dag_run_id>/taskInstances/<task_id>/logs" \
     -u "username:password"

 

  • 특정 task의 몇 번째 시도의 로그 조회
curl -X GET "http://<your_airflow_server>:8080/api/v1/dags/<dag_id>/dagRuns/<dag_run_id>/taskInstances/<task_id>/logs/0" \
     -u "username:password"

 

 

728x90
반응형
Comments