우상욱 2023. 5. 7. 21:19

Airflow는 환경설정을 통해서, 웹 api를 외부에서 활용할 수 있습니다.

Airflow API 활성화


  • airflow.cfg의 api 섹션에서 auth_backend의 값을 변경합니다.
    • auth_backend = airflow.api.auth.backend.basic_auth
  • airflow 웹서버를 재실행합니다.
    • sudo systemctl restart airflow-webserver
  • basic_auth 설정 재확인
    • sudo su airflow
    • airflow config get-value api auth_backends
  • Airflow Web UI 에서 새로운 사용자 추가
    • Security -> List Users -> +
    • 이후 화면에서 새 사용자 정보를 추가 합니다(monitor:MonitorUser1)
  • Health API 호출
    • curl -X GET --user "monitor:MonitorUser1" http://[AirflowServer]:8080/health
  • API를 통해서 할 수 있는 작업은 다양합니다.
    • 특정 DAG를 API로 Trigger하기
    • 모든 DAG 리스트하기
    • 모든 Variable 리스트하기

정상 실행 모습

 

아래는 파이썬으로 API를 가져오는 예제입니다.

import requests
import json

# health_api
server = "API 서버 주소"
username = "유저 네임"
password = "유저 비밀번호"

url = f"http://{server}:8080/health"
result = requests.get(url, auth=(username, password)).json()

print(json.dumps(result, indent=4))

# dags list api
username = "유저 네임"
password = "유저 비밀번호"

url = f"http://{server}:8080/api/v1/dags"
result = requests.get(url, auth=(username, password)).json()
print(json.dumps(result, indent=4))

 

더 많은 내용은 AIRFLOW의 공식문서를 참고하시면 됩니다!

https://airflow.apache.org/docs/apache-airflow/stable/stable-rest-api-ref.html#operation/post_dag_run

 

Airflow REST API

 

airflow.apache.org