Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Apache Airflow には、DAG のトリガーと管理、DAG 実行とタスクに関する情報の取得、接続とユーザーの追加と削除など、タスクの実行に使用できるコマンドライン インターフェース(CLI)があります。
CLI 構文のバージョンについて
Cloud Composer 1 の Airflow では、CLI コマンドに 2 つの異なる構文が用意されています。
Airflow 1.10 CLI 構文。Airflow 1.10 の Cloud Composer 環境で使用できます。
Airflow 2 CLI 構文。Airflow 2 の Cloud Composer 環境で使用できます。
サポートされている Airflow CLI コマンド
サポートされている Airflow コマンドの完全な一覧については、gcloud composer environments run
リファレンスをご覧ください。
準備
Cloud Composer で
gcloud
コマンドライン ツールを使用して Airflow CLI コマンドを実行するための十分な権限が必要です。詳細については、アクセス制御をご覧ください。2.4.0 より前のバージョンの Cloud Composer では、Airflow CLI コマンドを実行するために環境のクラスタのコントロール プレーンへのアクセス権が必要です。
Airflow CLI コマンドを実行
Airflow CLI コマンドをお使いの環境で実行するには、gcloud
を使用します。
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
SUBCOMMAND \
-- SUBCOMMAND_ARGUMENTS
以下のように置き換えます。
ENVIRONMENT_NAME
を環境の名前にする。LOCATION
は、環境が配置されているリージョン。SUBCOMMAND
を、サポートされている Airflow CLI コマンドのいずれかに置き換えます。SUBCOMMAND_ARGUMENTS
は、Airflow CLI コマンドの引数に置き換えます。
サブコマンド引数の区切り文字
--
で、指定された Airflow CLI コマンドの引数を区切ります。
Airflow 2
Airflow 2 CLI の構文:
- 複合 CLI コマンドをサブコマンドとして指定します。
- 複合コマンドの引数は、
--
区切り文字の後にサブコマンド引数として指定します。
gcloud composer environments run example-environment \
dags list -- --output=json
Airflow 1
Airflow 1.10 CLI の構文:
- CLI コマンドをサブコマンドとして指定します。
- 引数は
--
区切り文字の後に指定します。
gcloud composer environments run example-environment \
list_dags -- --report
デフォルトのロケーション
大部分の gcloud composer
コマンドでは、ロケーションを指定する必要があります。ロケーションを指定するには、--location
フラグを使用するか、デフォルトのロケーションを設定します。
例
たとえば、Cloud Composer 環境で ID 5077
を指定し、sample_quickstart
という名前の DAG をトリガーするには、次のようにします。
Airflow 2
gcloud composer environments run example-environment \
--location us-central1 dags trigger -- sample_quickstart \
--run-id=5077
Airflow 1
gcloud composer environments run example-environment \
--location us-central1 trigger_dag -- sample_quickstart \
--run_id=5077
プライベート IP 環境でのコマンドの実行
プライベート IP 環境で Airflow CLI コマンドを実行するには、GKE クラスタのコントロール プレーン エンドポイントにアクセスできるマシンで実行する必要があります。使用可能なオプションは、ご使用のプライベート クラスタの構成によって異なる場合があります。
環境のクラスタでパブリック エンドポイント アクセスが無効になっている場合、gcloud composer
コマンドを使用して Airflow CLI を実行することはできません。Airflow CLI コマンドを実行できるようにするには、次の操作を行います。
- VPC ネットワークに VM を作成します。
- クラスタの認証情報を取得します。次のコマンドを実行します。
bash 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
コマンドのタイムアウト セクションに記載されている指示に従ってください。