Airflow ウェブ インターフェースにアクセスする

Managed Airflow(第 3 世代) | Managed Airflow(第 2 世代) | Managed Airflow(以前の第 1 世代)

Apache Airflow には、Airflow DAG の管理、DAG 実行ログの表示、Airflow のモニタリング、管理アクションの実行に使用できる Airflow UI と呼ばれるウェブ ユーザー インターフェースが含まれています。

Airflow ウェブサーバーについて

各 Managed Airflow 環境には、Airflow UI を実行するウェブサーバーが用意されています。ウェブサーバーは Managed Airflow 環境のアーキテクチャの一部です。

始める前に

  • Managed Airflow 環境を表示できるロールを付与されている必要があります。詳細については、アクセス制御をご覧ください。

  • 環境の作成中に、Managed Airflow によって Airflow UI を実行するウェブサーバーの URL が構成されます。この URL はカスタマイズできません。

  • マネージド Airflow(第 3 世代)は、Airflow UI の Airflow UI アクセス制御(Airflow ロールベース アクセス制御)機能をサポートしています。

  • Google Workspace で [API の制御] > [未設定のサードパーティ製アプリ] > [サードパーティ製アプリへのアクセスをユーザーに許可しない] オプションが有効になっていて、Managed Airflow アプリの Apache Airflow が明示的に許可されていない場合、ユーザーはアプリケーションを明示的に許可しない限り、Airflow UI にアクセスできません。アクセスを許可するには、Google Workspace で Airflow UI へのアクセスを許可するの手順を実施します。

  • Chrome Enterprise Premium のコンテキストアウェア アクセス バインディングが、デバイス属性に依存するアクセスレベルで使用され、Managed Airflow アプリの Apache Airflow が除外されていない場合、ログイン ループが発生するため、Airflow UI にアクセスできません。アクセスを許可するには、コンテキストアウェア アクセス バインディングで Airflow UI へのアクセスを許可するの手順を実施します。

  • プロジェクトを保護する VPC Service Controls 境界で上り(内向き)ルールが構成されていて、Managed Airflow サービスへのアクセスを許可する上り(内向き)ルールで ANY_SERVICE_ACCOUNT または ANY_USER_ACCOUNT ID タイプが使用されている場合、ユーザーは Airflow UI にアクセスできず、ログイン ループに陥ります。このシナリオに対処する方法については、VPC Service Controls 上り(内向き)ルールで Airflow UI へのアクセスを許可するをご覧ください。

  • マネージド Airflow は、Apache Airflow UI オペレーションを許可するために上り(内向き)ルールと下り(外向き)ルールでサードパーティ IDを使用することをサポートしていません。ただし、上り(内向き)ルールと下り(外向き)ルールで ANY_IDENTITY ID タイプを使用すると、サードパーティ ID を含むすべての ID へのアクセスを許可できます。ANY_IDENTITY ID タイプの詳細については、上り(内向き)ルールと下り(外向き)ルールをご覧ください。

Airflow UI にアクセスする

Managed Airflow(第 3 世代)では、Airflow ウェブサーバーは環境のテナント プロジェクトで実行されます。ウェブサーバーは composer.googleusercontent.com ドメインにデプロイされ、Airflow UI にアクセスできます。

Managed Airflow(第 3 世代)では、ユーザー ID と、ユーザー用に定義された IAM ポリシー バインディングに基づいて、インターフェースにアクセスできます。

Google Cloud コンソールから Airflow UI にアクセスする

Google Cloud コンソールから Airflow UI にアクセスするには:

  1. Google Cloud コンソールで、[環境] ページに移動します。

    [環境] に移動

  2. [Airflow ウェブサーバー] 列で、ご使用の環境の [Airflow] リンクをクリックします。

  3. 適切な権限を持つ Google アカウントでログインします。

Google Cloud CLI を使用して Airflow UI の URL を取得する

Airflow UI には、任意のウェブブラウザからアクセスできます。Airflow UI の URL を取得するには、Google Cloud CLI で次のコマンドを実行します。

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION

以下を置き換えます。

  • ENVIRONMENT_NAME: 環境の名前。
  • LOCATION: 環境が配置されているリージョン。

Google Cloud CLI コマンドにより、Airflow UI の URL を含む Managed Airflow 環境のプロパティが表示されます。URL は、airflowUri および airflowByoidUri として一覧表示されます。

  • airflowUri URL アドレスは、Google アカウントで使用されます。
  • airflowByoidUri URL アドレスは、プロジェクトで Workforce Identity 連携を構成する場合に、外部 ID で使用されます。
config:
  airflowUri: https://example-dot-us-central1.composer.googleusercontent.com
  airflowByoidUri: https://example-dot-us-central1.composer.byoid.googleusercontent.com

ウェブサーバーを再起動する

Managed Airflow 環境のデバッグやトラブルシューティングを行う際は、Airflow ウェブサーバーを再起動することで一部の問題が解決する場合があります。ウェブサーバーを再起動するには、restartWebServer API または Google Cloud CLI の restart-web-server コマンドを使用します。

gcloud composer environments restart-web-server ENVIRONMENT_NAME \
  --location=LOCATION

以下を置き換えます。

  • ENVIRONMENT_NAME: 環境の名前。
  • LOCATION: 環境が配置されているリージョン。

ウェブサーバーへのネットワーク アクセスを構成する

Airflow ウェブサーバーのアクセス パラメータは、環境のネットワーク構成に依存しません。代わりに、ウェブサーバーのアクセスを個別に構成します。 たとえば、プライベート IP 環境で、引き続きインターネットから Airflow UI にアクセスできます。

許可された IP 範囲をプライベート IP アドレスに構成することはできません。

コンソール

  1. Google Cloud コンソールで、[環境] ページに移動します。

    [環境] に移動

  2. 環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。

  3. [環境の設定] タブに移動します。

  4. [ネットワークの構成] セクションで、[ウェブサーバーのアクセス制御] 項目を見つけて [編集] をクリックします。

  5. [ウェブサーバーのネットワーク アクセス制御] ダイアログで、次の操作を行います。

    • すべての IP アドレスから Airflow ウェブサーバーへのアクセスを許可するには、[すべての IP アドレスからのアクセスを許可する] を選択します。

    • アクセスを特定の IP 範囲のみに制限するには、[特定の IP アドレスからのアクセスのみを許可する] を選択します。[IP 範囲] フィールドに、CIDR 表記の IP 範囲を指定します。[説明] フィールドに、この範囲の説明を入力します(省略可)。複数の範囲を指定する場合は、[IP 範囲の追加] をクリックします。

    • すべての IP アドレスのアクセスを禁止するには、[特定の IP アドレスからのアクセスのみを許可する] を選択し、空の範囲エントリの横にある [項目を削除する] をクリックします。

gcloud

環境を更新する場合は、次の引数でウェブサーバーのアクセス パラメータを制御します。

  • --web-server-allow-all を使用すると、すべての IP アドレスから Airflow にアクセスできます。これはデフォルトのオプションです。

  • --update-web-server-allow-ip は、特定のソース IP 範囲へのアクセスのみを制限します。複数の IP 範囲を指定するには、この引数を複数回使用します。

  • --web-server-deny-all は、すべての IP アドレスに対してアクセスを禁止します。

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --update-web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION

以下を置き換えます。

  • ENVIRONMENT_NAME: 環境の名前。
  • LOCATION: 環境が配置されているリージョン。
  • WS_IP_RANGE: Airflow UI にアクセスできる IP 範囲(CIDR 表記)。
  • WS_RANGE_DESCRIPTION: IP 範囲の説明。

例:

gcloud composer environments update example-environment \
    --location us-central1 \
    --update-web-server-allow-ip ip_range=192.0.2.0/24,description="example range" \
    --update-web-server-allow-ip ip_range=192.0.4.0/24,description="example range 2"

API

  1. [environments.patch][api-patch] API リクエストを作成します。

  2. このリクエストで次のように操作します。

    1. updateMask パラメータで、config.webServerNetworkAccessControl マスクを指定します。

    2. リクエスト本文で、Airflow タスクログの保存方法を指定します。

      • すべての IP アドレスから Airflow へのアクセスを許可するには、空の config 要素を指定します(webServerNetworkAccessControl 要素が存在してはなりません)。

      • アクセスを特定の IP 範囲に制限するには、allowedIpRanges で 1 つ以上の範囲を指定します。

      • すべての IP アドレスに対するアクセスを禁止するには、空の webServerNetworkAccessControl 要素を指定します。webServerNetworkAccessControl 要素は存在する必要がありますが、その中に allowedIpRanges 要素を含めることはできません。

{
  "config": {
    "webServerNetworkAccessControl": {
      "allowedIpRanges": [
        {
          "value": "WS_IP_RANGE",
          "description": "WS_RANGE_DESCRIPTION"
        }
      ]
    }
  }
}

以下を置き換えます。

  • WS_IP_RANGE: Airflow UI にアクセスできる IP 範囲(CIDR 表記)。
  • WS_RANGE_DESCRIPTION: IP 範囲の説明。

例:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.webServerNetworkAccessControl

{
  "config": {
    "webServerNetworkAccessControl": {
      "allowedIpRanges": [
        {
          "value": "192.0.2.0/24",
          "description": "example range"
        },
        {
          "value": "192.0.4.0/24",
          "description": "example range 2"
        }
      ]
    }
  }
}

Terraform

allowed_ip_range ブロックの web_server_network_access_control で、ウェブサーバーにアクセスできる IP 範囲を指定します。

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    web_server_network_access_control {

      allowed_ip_range {
        value = "WS_IP_RANGE"
        description = "WS_RANGE_DESCRIPTION"
      }

    }

  }
}

以下を置き換えます。

  • WS_IP_RANGE: Airflow UI にアクセスできる IP 範囲(CIDR 表記)。
  • WS_RANGE_DESCRIPTION: IP 範囲の説明。

例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    web_server_network_access_control {
      allowed_ip_range {
        value = "192.0.2.0/24"
        description = "example range"
      },
      allowed_ip_range {
        value = "192.0.4.0/24"
        description = "example range 2"
      }

    }
}

次のステップ