728x90
반응형
Airflow API
Airflow는 현재 실행되고 있는 airflow의 상태 등을 알 수 있고, 외부에서 조작이 가능하도록 하는 API를 제공하고 있다. 이 API를 사용하기 위해서는 몇 가지 설정이 필요하다.
Airflow API 활성화
airflow.cfg의 api 섹션에서 auth_backend의 값을 변경해야 한다. 일반적으로 docker-compose.yaml파일을 사용할 경우 이미 설정이 되어있는 것을 확인할 수 있다.
# docker-compose.yaml 파일
&airflow-common-env
...
AIRFLOW__API__AUTH_BACKENDS: 'airflow.api.auth.backend.basic_auth,airflow.api.auth.backend.session'
또는 아래 명령어를 통해 확인해볼 수 있다.
docker exec -it {scheduler container 이름} airflow config get-value api auth_backends
>>>
airflow.api.auth.backend.basic_auth,airflow.api.auth.backend.session
Airflow API 사용자 추가
Airflow API 사용자는 Webserver UI 또는 CLI를 통해 추가하거나 삭제할 수 있다. (Admin 권한이 있어야 함)
[Security] - [List Users] - [+]
위와 같이 정보를 입력하고, Role에 'User'를 지정한다. (Admin 계정을 사용하는 것보다 이렇게 사용하는 것이 안전하다.)
API 호출해보기 (Airflow 정상 동작 확인)
curl -X GET --user "monitor:minding" http://localhost:8080/health
{"dag_processor": {"latest_dag_processor_heartbeat": null, "status": null}, "metadatabase": {"status": "healthy"}, "scheduler": {"latest_scheduler_heartbeat": "2024-11-19T04:25:08.947698+00:00", "status": "healthy"}, "triggerer": {"latest_triggerer_heartbeat": "2024-11-19T04:25:07.776136+00:00", "status": "healthy"}}%
위와 같이 airflow 각 구성에 대한 상태값을 반환해준다. 시간단위는 UTC기준이다.
그 외 여러가지 기능을 API를 통해 확인할 수 있다.
# 특정 DAG을 API로 Trigger하기
curl -X POST --user "airflow:airflow" -H 'Content-Type: application/json' -d '{"execution_date":"2023-05-24T00:00:00Z"}' "http://localhost:8080/api/v1/dags/HelloWorld/dagRuns"
# 모든 DAG 리스트 출력하기
curl -X GET --user "airflow:airflow" http://localhost:8080/api/v1/dags
# 모든 Variable 리스트 출력하기
curl -X GET --user "airflow:airflow" http://localhost:8080/api/v1/variables
728x90
'Minding's Programming > Airflow' 카테고리의 다른 글
[Airflow/Slack] Airflow DAG 실패 시 Slack으로 알림 보내기 (0) | 2024.11.19 |
---|---|
[Airflow] CustomSensor 만들어 활용하기 (0) | 2024.08.05 |
[Airflow] Airflow의 기본 센서 (BashSensor, FileSensor, PythonSensor) (0) | 2024.07.31 |
[Airflow] Connection Type 신규 추가하는 방법 (0) | 2024.07.31 |
[Airflow] Postgres Hook bulk_load 문제점, Custom Hook으로 bulk_load() 해보기 (0) | 2024.07.29 |