Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Apache Airflow には、DAG のトリガーと管理、DAG 実行とタスクに関する情報の取得、接続とユーザーの追加と削除など、タスクの実行に使用できるコマンドライン インターフェース(CLI)があります。
サポートされている Airflow CLI コマンド
Airflow は、Airflow ドキュメントで説明されている Airflow 2 CLI 構文を使用します。
サポートされている Airflow CLI コマンドの完全な一覧については、gcloud composer environments run
コマンドのリファレンスをご覧ください。
始める前に
Cloud Composer で Google Cloud CLI を使用して Airflow CLI コマンドを実行するには、権限が必要です。
Airflow CLI コマンドは
environments.executeAirflowCommand
割り当てを消費します。2.4.0 より前のバージョンの Cloud Composer では、Airflow 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
フラグを使用するか、デフォルトのロケーションを設定します。
たとえば、Cloud Composer 環境で ID 5077
を指定し、sample_quickstart
という名前の DAG をトリガーするには、次のようにします。
gcloud composer environments run example-environment \
--location us-central1 dags trigger -- sample_quickstart \
--run-id=5077
プライベート IP 環境でのコマンドの実行
2.4.0 より前のバージョンの Cloud Composer の場合:
プライベート IP 環境で Airflow CLI コマンドを実行するには、GKE クラスタのコントロール プレーン エンドポイントにアクセスできるマシンで実行する必要があります。使用可能なオプションは、ご使用のプライベート クラスタの構成によって異なる場合があります。
環境のクラスタでパブリック エンドポイント アクセスが無効になっている場合、gcloud composer
コマンドを使用して Airflow CLI を実行することはできません。Airflow CLI コマンドを実行できるようにするには、次の操作を行います。
- VPC ネットワークに VM を作成します。
クラスタの認証情報を取得します。次のコマンドを実行します。
gcloud container clusters get-credentials CLUSTER_NAME \ --region REGION \ --project PROJECT \ --internal-ip
kubectl
を使用して Airflow コマンドを実行します。次に例を示します。
kubectl exec deployment/airflow-scheduler -n COMPOSER_NAMESPACE \
--container airflow-scheduler -- airflow dags list
COMPOSER_NAMESPACE
は、composer-2-0-28-airflow-2-3-394zxc12411
のような名前空間に置き換えます。Cloud Composer は、ワークロードのリストで確認できます。また、kubectl get namespaces
コマンドを使用して確認することもできます。
環境のクラスタでパブリック エンドポイント アクセスが有効になっている場合は、承認済みネットワークに追加された外部 IP アドレスを持つマシンから Airflow CLI コマンドを実行することもできます。マシンからのアクセスを有効にするには、マシンの外部アドレスを環境の承認済みネットワークのリストに追加します。
gcloud composer environments run
コマンドまたは kubectl
コマンドを実行すると、次のエラーが発生することがあります。
Get "https://<IP Address>/api?timeout=32s": dial tcp <IP Address>:443: i/o timeout"
症状: このエラー メッセージは、これらのコマンドを実行したパソコンからのネットワーク接続がないことを示しています。
解決策: プライベート IP 環境でのコマンドの実行に示されているガイドラインに従うか、kubectl
コマンドのタイムアウト セクションに記載されている指示に従ってください。
Cloud Composer API を使用して Airflow CLI コマンドを実行する
Cloud Composer バージョン 2.4.0 以降では、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
: プロジェクト IDLOCATION
: 環境が配置されているリージョン。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"
]
}
ポーリング コマンドのステータス
Cloud Composer API を使用して Airflow CLI コマンドを実行した後、PollAirflowCommand リクエストを発行し、エラーとステータス コード用の exitInfo
のフィールドを調べて、コマンドが正常に完了したかどうかを確認します。output
フィールドにはログ行が含まれます。
コマンドの実行ステータスを取得してログを取得するには、ExecuteAirflowCommandRequest
から返された executionId
、pod
、podNamespace
の値を指定します。
例:
// POST https://composer.googleapis.com/v1/{environment=projects/*/locations/*/environments/*}:pollAirflowCommand
{
"executionId": "39b82312-3a19-4d21-abac-7f8f19855ce7",
"pod": "airflow-scheduler-1327d8cd68-hblpd",
"podNamespace": "composer-2-4-0-airflow-2-5-3-184dadaf",
"nextLineNumber": 1
}