Managed Airflow(Gen 3) | Managed Airflow(Gen 2) | Managed Airflow(レガシー Gen 1)
Apache Airflow には、Airflow DAG の管理、 DAG 実行ログの表示、Airflow のモニタリング、管理アクションの実行に使用できる Airflow UI と呼ばれるウェブ ユーザー インターフェースが含まれています。
Airflow ウェブサーバーについて
各 Managed Airflow 環境には、Airflow UI を実行するウェブサーバーが用意されています。ウェブサーバーは Managed Airflow 環境のアーキテクチャの一部です。
始める前に
マネージド Airflow 環境を表示できるロールが必要です。詳細については、アクセス制御をご覧ください。
環境の作成中に、Managed Airflow によって Airflow UI を実行するウェブサーバーの URL が構成されます。この URL はカスタマイズできません。
マネージド Airflow(Gen 3)は、Airflow UI の Airflow UI アクセス制御(Airflow ロールベース アクセス 制御)機能をサポートしています。
If the [API の制御] > [未設定のサードパーティ製アプリ] > [ユーザーにサードパーティ製アプリへのアクセスを許可しない] オプション が Google Workspace で有効になっており、 マネージド Airflow アプリの Apache Airflow が明示的に許可されていない場合、 アプリケーションを明示的に許可しない限り、ユーザーは Airflow UI に アクセスできません。アクセスを許可するには、 Google Workspace で Airflow UI へのアクセスを許可するの手順を実施します。
Chrome Enterprise Premium コンテキストアウェア アクセス バインディングが、 デバイス属性に依存するアクセスレベルで使用され、 マネージド Airflow アプリの Apache Airflow が除外されていない場合、ログイン ループが発生するため、 Airflow UI にアクセスできません。アクセスを許可するには、コンテキストアウェア アクセス バインディングで Airflow UI へのアクセスを許可するの手順を実施します。
プロジェクトを保護する VPC Service Controls 境界で上り(内向き)ルールが構成されていて、Managed Airflow サービスへのアクセスを許可する上り(内向き)ルールで
ANY_SERVICE_ACCOUNTまたはANY_USER_ACCOUNTID タイプが使用されている場合、ユーザーは Airflow UI にアクセスできず、ログイン ループに陥ります。このシナリオに対処する方法については、 VPC Service Controls 上り(内向き)ルールで Airflow UI へのアクセスを許可するをご覧ください。マネージド Airflow は、Apache Airflow UI オペレーションを許可するために上り(内向き)ルールと下り(外向き)ルールで サードパーティ ID を使用することをサポートしていません。ただし、上り(内向き)ルールと下り(外向き)ルールで
ANY_IDENTITYID タイプを使用すると、サードパーティ ID を含むすべての ID へのアクセスを許可できます。ANY_IDENTITYID タイプの詳細については、 上り(内向き)ルールと下り(外向き)ルールをご覧ください。
Airflow UI にアクセスする
マネージド Airflow(Gen 3)では、Airflow ウェブサーバーは
環境のテナント プロジェクトで実行されます。ウェブサーバーは composer.googleusercontent.com ドメインにデプロイされ、Airflow UI にアクセスできます。
Managed Airflow(Gen 3)では、ユーザー ID と、ユーザー用に定義された IAM ポリシー バインディングに基づいて、インターフェースにアクセスできます。
コンソールから Airflow UI にアクセスする Google Cloud
コンソールから Airflow UI にアクセスするには: Google Cloud
コンソールで、[Environments] ページに移動します。 Google Cloud
[Airflow ウェブサーバー] 列で、ご使用の環境の [Airflow] リンクをクリックします。
適切な権限を持つ 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 として一覧表示されます。
airflowUriURL アドレスは、Google アカウントで使用されます。airflowByoidUriURL アドレスは、プロジェクトで 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 アドレスに構成することはできません。
コンソール
コンソールで、[Environments] ページに移動します。 Google Cloud
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[環境の設定] タブに移動します。
[ネットワークの構成] セクションで、[ウェブサーバーのアクセス制御] 項目を見つけて [編集] をクリックします。
[ウェブサーバーのネットワーク アクセス制御] ダイアログで、次の操作を行います。
すべての 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
[
environments.patch][api-patch] API リクエストを作成します。このリクエストで次のように操作します。
updateMaskパラメータで、config.webServerNetworkAccessControlマスクを指定します。リクエスト本文で、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"
}
}
}