Apache Airflow에서 REST API를 인증된 사용자와 비밀번호를 통해 사용할 수 있게 설정하려면 다음 단계를 따르세요:
1. 사용자 계정 생성
Airflow의 CLI를 사용하여 사용자 계정을 생성합니다.
airflow users create \
--username admin \
--firstname Admin \
--lastname User \
--role Admin \
--email admin@example.com \
--password yourpassword
이 명령은 admin
이라는 이름의 사용자 계정을 생성합니다. REST API에 접근하려면 이 사용자 계정을 사용합니다.
2. REST API 활성화
Airflow는 기본적으로 REST API가 활성화되어 있습니다. 하지만 API를 사용하려면 인증이 필요하므로 auth_backend
설정이 중요합니다.
2.1 airflow.cfg
파일 확인
Airflow의 api.auth_backend
설정을 확인하고, password_auth
가 설정되어 있는지 확인합니다.
airflow.cfg
에서 다음 섹션을 찾아 수정합니다.
[api]
auth_backend = airflow.api.auth.backend.basic_auth
3. API 사용
이제 기본 인증(Basic Auth)을 통해 REST API에 접근할 수 있습니다.
curl
명령어를 사용하여 Airflow의 REST API로 DAG 리스트를 가져오는 방법은 다음과 같습니다. 이 방법은 Airflow 2.x의 REST API를 사용하는 것을 기준으로 합니다.
3.1 기본 명령
REST API 호출에 필요한 기본 구성:
- 엔드포인트:
http://<AIRFLOW_HOST>:<PORT>/api/v1/dags
- HTTP 메서드:
GET
- 인증: Basic Auth 또는 Token 인증 사용
3.2 Basic Auth를 사용하는 경우
다음은 Basic Auth를 사용하여 Airflow API로 DAG 리스트를 가져오는 curl
명령어입니다:
curl -X GET "http://<AIRFLOW_HOST>:<PORT>/api/v1/dags" \
-u "username:password" \
-H "Accept: application/json"
<AIRFLOW_HOST>
: Airflow 서버의 호스트 이름 (예:localhost
).<PORT>
: Airflow Webserver의 포트 번호 (기본값:8080
).username:password
: Airflow 사용자 계정의 사용자명과 비밀번호.
3.3 에러 처리
- 인증 실패 시: HTTP 401 응답과 함께 에러 메시지가 반환됩니다.
- 잘못된 엔드포인트 호출 시: HTTP 404 응답.
3.4 추가 참고
- Airflow Webserver가 실행 중이어야 합니다.
- RBAC가 활성화된 경우, 적절한 권한을 가진 사용자 계정을 사용해야 합니다.
3.5 요청 예시
curl
을 사용하여 REST API에 요청하는 예는 다음과 같습니다:
curl -X GET \
"http://<airflow-webserver>:8080/api/v1/dags" \
-H "Content-Type: application/json" \
--user "admin:yourpassword"
3.6 응답 예시
API 호출이 성공하면 다음과 같은 JSON 응답을 받게 됩니다:
{
"dags": [
{
"dag_id": "example_dag",
"description": "An example DAG",
"fileloc": "/path/to/dag.py",
"is_paused": false,
...
},
{
"dag_id": "another_dag",
"description": "Another example DAG",
"fileloc": "/path/to/another_dag.py",
"is_paused": true,
...
}
],
"total_entries": 2
}
3.7 Python 예시
Python에서 requests
라이브러리를 사용하여 REST API를 호출할 수 있습니다:
import requests
url = "http://<airflow-webserver>:8080/api/v1/dags"
response = requests.get(url, auth=('admin', 'yourpassword'))
if response.status_code == 200:
print(response.json())
else:
print(f"Error: {response.status_code} - {response.text}")
4. 역할 기반 접근 제어(RBAC) 확인
Airflow는 RBAC(Role-Based Access Control)을 지원합니다. 따라서 API를 호출하려는 사용자가 적절한 역할(예: Admin
또는 Op
)을 가지고 있어야 합니다.
4.1 역할 확인
생성된 사용자가 올바른 역할을 가지고 있는지 확인하세요. RBAC는 Airflow 웹 UI에서 관리할 수 있습니다.
5. 테스트 및 디버깅
REST API가 올바르게 작동하는지 테스트합니다. API 호출이 실패하면 다음 사항을 확인하세요:
- Webserver 로그 (
airflow-webserver.log
)에서 오류 메시지 확인. - 사용자 계정과 비밀번호 확인.
- Webserver가 올바르게 실행되고 있는지 확인.
이 설정을 완료하면 Airflow REST API를 사용자 이름과 비밀번호를 통해 사용할 수 있습니다.
'Data Mining & Distributed > Airflow' 카테고리의 다른 글
[ Airflow ] concurrency - 동시 작업 개수 제한하기 (0) | 2025.01.02 |
---|---|
[ Airflow ] task_concurrency - 동일 작업 개수 제한하기 (0) | 2025.01.02 |
[ Airflow ] 1년에 한 번 실행 되는 DAG 설정으로 excution_date 이해하기 (0) | 2024.12.23 |
[ Airflow ] start_date, schedule 설정하기(1년 주기) (0) | 2024.12.23 |
[ Airflow ] MySQL, PostgreSQL - 기본 Database 설정하고 생성하기 (0) | 2024.12.02 |