Public API

Public API (공개 API)

Airflow 공개 API는 JWT(JSON Web Token)로 요청을 인증해요. 이 문서는 토큰을 발급받고 API를 호출하는 방법, CORS 활성화, 페이지 크기 제한, 페이로드 주의사항을 다루고 있어요.

출처: 문서

본문

Airflow 공개 API 인증

Airflow 공개 API는 API 요청 인증에 JWT(JSON Web Token)를 사용해요. Airflow API로 보내는 각 요청은 클라이언트의 신원과 권한을 검증하기 위해 Authorization 헤더에 유효한 JWT 토큰을 포함해야 해요.

JWT 토큰 생성하기

Airflow API와 상호작용하려면 클라이언트가 먼저 인증하고 JWT 토큰을 얻어야 해요. 토큰은 /auth/token 엔드포인트로 POST 요청을 보내 필요 자격 증명(예: username과 password)을 전달하여 생성할 수 있어요. /auth/token 엔드포인트는 auth manager가 제공하므로, 여러분 환경에 구성된 auth manager의 문서를 자세히 읽어보세요.

지원되는 auth manager 목록은 Auth managers 목록에서 확인할 수 있어요.

예시

요청 (Request)

ENDPOINT_URL="http://localhost:8080"
curl -X POST ${ENDPOINT_URL}/auth/token \
  -H "Content-Type: application/json" \
  -d '{
    "username": "your-username",
    "password": "your-password"
  }'

응답 (Response)

{
  "access_token": "<JWT-TOKEN>"
}

JWT 토큰을 사용해 Airflow 공개 API 호출하기

ENDPOINT_URL="http://localhost:8080"
curl -X GET ${ENDPOINT_URL}/api/v2/dags \
  -H "Authorization: Bearer ***"

CORS 활성화하기

Cross-origin resource sharing (CORS)는 브라우저에서 실행되는 스크립트가 시작하는 HTTP 요청을 제한하는 브라우저 보안 기능이에요.

Access-Control-Allow-Headers, Access-Control-Allow-Methods, Access-Control-Allow-Origin 헤더는 airflow.cfg 파일의 [api] 섹션에서 access_control_allow_headers, access_control_allow_methods, access_control_allow_origins 옵션 값을 설정하여 추가할 수 있어요.

[api]
access_control_allow_headers = origin, content-type, accept
access_control_allow_methods = POST, GET, OPTIONS, DELETE
access_control_allow_origins = https://exampleclientapp1.com https://exampleclientapp2.com

Airflow의 API는 항상 Access-Control-Allow-Credentials: true로 응답하기 때문에 UI와 클라이언트가 오리진(origin)을 넘어 쿠키와 Authorization 헤더를 보낼 수 있어요. 그래서 access_control_allow_origins는 접근이 필요한 정확한 오리진을 나열해야 하며, 와일드카드 *는 시작 시 거부돼요. CORS 사양은 Access-Control-Allow-Origin: *와 자격 증명 응답(credentialed response)의 조합을 금지하며, 브라우저는 그런 응답을 거부하므로 와일드카드 오리진은 모든 교차 오리진 요청을 깨뜨리게 돼요.

페이지 크기 제한

애플리케이션 불안정을 초래할 수 있는 요청으로부터 보호하기 위해, 안정(stable) API는 응답 항목 수에 제한을 두고 있어요. 기본값은 100개 항목이며, airflow.cfg 파일의 [api] 섹션에서 maximum_page_limit 옵션을 사용해 변경할 수 있어요.

요청 페이로드 고려사항 (Request Payload Considerations)

데이터 페이로드를 받는 REST API(예: Variables API)를 사용할 때는 페이로드 크기에 주의하세요. 대형 페이로드(백만 바이트 같은 평범하지 않은 크기)는 Airflow webserver의 성능에 영향을 줄 수 있어요. 배포 환경의 프록시 계층에서 적절한 크기 제한을 구현하는 것을 권장해요.

더 알아보기 (Learn more)