Airflow コマンドライン インターフェースにアクセスする

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Apache Airflow には、DAG のトリガーと管理、DAG 実行とタスクに関する情報の取得、接続とユーザーの追加と削除など、タスクの実行に使用できるコマンドライン インターフェース(CLI)があります。

CLI 構文のバージョンについて

Cloud Composer 1 の Airflow では、CLI コマンドに 2 つの異なる構文が用意されています。

サポートされている Airflow CLI コマンド

サポートされている Airflow コマンドの完全な一覧については、gcloud composer environments run リファレンスをご覧ください。

始める前に

  • Cloud Composer で Google Cloud CLI を使用し、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 コマンドを実行できるようにするには、次の操作を行います。

  1. VPC ネットワークに VM を作成します
  2. クラスタの認証情報を取得します。次のコマンドを実行します。 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 コマンドのタイムアウト セクションに記載されている指示に従ってください。