관리형 Airflow (3세대) | 관리형 Airflow (2세대) | 관리형 Airflow (기존 1세대)
Apache Airflow에는 DAG 트리거 및 관리, DAG 실행 및 태스크 정보 가져오기, 연결 및 사용자 추가와 삭제 등의 작업을 수행하는 데 사용할 수 있는 명령줄 인터페이스 (CLI)가 있습니다.
지원되는 Airflow CLI 명령어
Airflow는 Airflow 문서에 설명된 Airflow CLI 구문을 사용합니다.
관리형 Airflow (3세대)는 다음 Airflow CLI 명령어를 지원합니다.
(Airflow 2 및 3)
gcloud composer environments run명령어는 환경의 Airflow CLI 명령어를 실행합니다. 일부 명령어는 차단되어 실행할 수 없습니다. 지원되는 Airflow CLI 명령어 목록은 명령어 참조를 확인하세요.(Airflow 3)
airflowctl명령줄 도구는 Airflow CLI 명령어의 하위 집합을 지원하고 Airflow REST API를 사용하여 실행합니다.airflowctl에서 사용할 수 있는 모든 명령어는 관리형 Airflow에서 지원됩니다. 사용자의 Airflow 계정에 특정 명령어를 실행할 수 있는 Airflow 역할이 있는지 확인합니다.
시작하기 전에
Google Cloud CLI를 통해 Airflow CLI 명령어를 실행하려면 다음 안내를 따르세요.
Google 계정에 관리형 Airflow에서 Google Cloud CLI를 사용하고 Airflow CLI권한 명령어를 실행할 수 있는 권한이 있어야 합니다.
Google Cloud CLI를 통해 실행되는 Airflow CLI 명령어는
Google Cloud CLI를 통해 DAG를 트리거하면 환경이 할당량 한도에 도달하여 Airflow CLI 명령어가 더 이상 실행되지 않을 수 있습니다.environments.executeAirflowCommand할당량을 사용합니다.
`
airflowctl 명령줄 도구 (Airflow 3)를 통해 Airflow CLI 명령어를 실행하려면 다음 안내를 따르세요.
Google 계정에
composer.environments.get권한이 있어야 합니다. 관리형 Airflow 환경을 볼 수 있는 역할에서 제공됩니다.airflowctl명령줄 도구에는 Airflow CLI 명령어를 실행하기 위한 권한이 필요하지 않습니다.airflowctl을 통해 실행되는 Airflow CLI 명령어는environments.executeAirflowCommand할당량을 사용하지 않습니다.
gcloud CLI로 Airflow CLI 명령어 실행
환경에서 Airflow CLI 명령어를 실행하려면 gcloud CLI를 사용합니다.
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
SUBCOMMAND \
-- SUBCOMMAND_ARGUMENTS
다음을 바꿉니다.
ENVIRONMENT_NAME: 환경의 이름입니다.LOCATION: 환경이 위치한 리전입니다.SUBCOMMAND: 지원되는 Airflow CLI 명령어 중 하나입니다.SUBCOMMAND_ARGUMENTS를 Airflow CLI 명령어의 인수로 바꿉니다.
하위 명령어 인수 구분 기호
지정된 Airflow CLI 명령어의 인수를 --로 구분합니다.
- 복합 CLI 명령어를 하위 명령어로 지정합니다.
--구분 기호 뒤에 복합 명령어의 인수를 하위 명령어 인수로 지정합니다.
예를 들면 다음과 같습니다.
gcloud composer environments run example-environment \
dags list -- --output=json
기본 위치
대부분 gcloud composer 명령어에는 위치가 필요합니다.
위치를 --location 플래그로 지정하거나
기본 위치를 설정할 수 있습니다.
예를 들어 관리형 Airflow 환경에서 ID가 5077인 sample_quickstart라는 DAG를 트리거하려면 다음을 실행합니다.
gcloud composer environments run example-environment \
--location us-central1 dags trigger -- sample_quickstart \
--run-id=5077
airflowctl로 Airflow CLI 명령어 실행
airflowctl 명령줄 도구는 Airflow CLI 명령어를 실행하기 위해 Airflow에서 제공하는 명령줄
유틸리티입니다. Airflow CLI 명령어의 하위 집합을 지원하고 Airflow REST API를 사용하여 실행합니다. airflowctl에서 사용할 수 있는 모든 명령어는 관리형 Airflow에서 지원됩니다.
관리형 Airflow에서 airflowctl을 사용한 승인 및 인증은 다음과 같이 작동합니다.
airflowctl은 Airflow REST API를 사용하므로 Google 계정 또는 서비스 계정과 연결된 Airflow 사용자 계정에 명령어를 실행할 수 있는 충분한 권한이 있는 Airflow 역할이 있는지 확인합니다. 예를 들어 일부 명령어는Admin역할이 있는 Airflow 사용자만 실행할 수 있습니다.airflowctl에서 사용하는 API 토큰은gcloud auth application-default print-access-token명령어로 제공됩니다. 기본적으로 토큰의 만료 기간은 1시간입니다. 이 명령어에 제공된--lifetime인수로 변경할 수 있습니다.
airflowctl로 인증하려면 다음 명령어를 실행합니다.
airflowctl auth login \
--api-url WEB_SERVER_URL \
--api-token $(gcloud auth application-default print-access-token)
다음을 바꿉니다.
예를 들면 다음과 같습니다.
airflowctl auth login \
--api-url https://example-dot-us-central1.composer.googleusercontent.com \
--api-token $(gcloud auth application-default print-access-token)
airflowctl로 인증한 후 Airflow CLI 명령어를 실행할 수 있습니다.
airflowctl dags list
Cloud Composer API를 통해 Airflow CLI 명령어 실행
관리형 Airflow (3세대)에서는 Cloud Composer API를 통해 Airflow CLI 명령어를 실행할 수 있습니다.
명령어 실행
environments.executeAirflowCommand API 요청을 생성합니다.
{
"environment": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"command": "AIRFLOW_COMMAND",
"subcommand": "AIRFLOW_SUBCOMMAND",
"parameters": [
"SUBCOMMAND_PARAMETER"
]
}
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID입니다.LOCATION: 환경이 위치한 리전입니다.ENVIRONMENT_NAME: 환경의 이름입니다.AIRFLOW_COMMAND: 실행하려는 Airflow CLI 명령어입니다(예:dags).AIRFLOW_SUBCOMMAND: 실행하려는 Airflow CLI 명령어의 하위 명령어입니다(예:list).- (선택사항)
SUBCOMMAND_PARAMETER: 하위 명령어의 매개변수입니다. 매개변수를 두 개 이상 사용하려면 목록에 항목을 더 추가합니다.
예를 들면 다음과 같습니다.
// POST https://composer.googleapis.com/v1/{environment=projects/*/locations/*/environments/*}:executeAirflowCommand
{
"environment": "projects/example-project/locations/us-central1/environments/example-environment",
"command": "dags",
"subcommand": "list",
"parameters": [
"-o json",
"--verbose"
]
}
Poll 명령어 상태
Cloud Composer API를 통해 Airflow CLI 명령어를 실행한 후 PollAirflowCommand 요청을 전송하고 오류 및 상태 코드에 대해 exitInfo의 필드를 검사하여 명령어가 성공적으로 완료되었는지 확인합니다. output 필드에는 로그 줄이 포함됩니다.
명령어 실행 상태와 로그를 가져오려면 ExecuteAirflowCommandRequest에서 반환한 executionId, pod, podNamespace 값을 제공합니다.
예를 들면 다음과 같습니다.
// POST https://composer.googleapis.com/v1/{environment=projects/*/locations/*/environments/*}:pollAirflowCommand
{
"executionId": "a117da94-355d-4ad4-839e-ac39ccb0bf48",
"pod": "airflow-webserver-66d96b858f-tn96b",
"podNamespace": "airflow-2-10-2-build-13-226523e4",
"nextLineNumber": 1
}