Amazon Managed Workflows for Apache Airflow (Amazon MWAA) 環境で Apache Airflow UI を開こうとすると、「接続がタイムアウトしました」というエラーが発生します。
簡単な説明
Amazon MWAA 環境では、Apache Airflow UI にパブリックアクセスモードとプライベートアクセスモードが用意されています。パブリックアクセスモードでは、Apache Airflow ウェブサーバーはインターネットに開かれており、追加の設定なしでアクセスできます。ただし、セキュリティグループを使用して Apache Airflow ウェブサーバーのネットワークアクセスを制御することはできません。したがって、このオプションはプライベートアクセスモードに比べて安全性は低いと見なされます。プライベートアクセスモードでは、Apache Airflow ウェブサーバーは環境内の Amazon Virtual Private Cloud (Amazon VPC) 内部にのみ公開されます。Amazon MWAA は、各環境の VPC 内に VPC エンドポイントを作成します。したがって、Apache Airflow UI にアクセスするには VPC へのアクセスが必要です。プライベートネットワークアクセスモードには、追加のネットワーク設定が必要です。
解決策
次のいずれかの方法を使用すると、プライベートネットワークアクセスモードで Apache Airflow Web サーバーにアクセスできます。
AWS Direct Connect または VPN
オンプレミスネットワークを Amazon VPC に接続するために AWS Direct Connect または VPN 接続を使用している場合は、ネットワークチームと相談のうえで、Amazon MWAA ウェブサーバーのアドレスへのアクセスを設定してください。ネットワークパスの確立後、環境に関連付けられているセキュリティグループを確認して、Amazon MWAA Web サーバーがソース IP またはサブネットからの HTTPS (TCP 443) トラフィックを許可していることを確認します。AWS Client VPN を使用してプライベートネットワークアクセスを設定することもできます。
それでも問題が解決しない場合は、次のことを試してください。
- nslookup や dig (dig) などのツールを使用して DNS 解決を確認します <airflow-web-server-address>。
- telnet (telnet) などのツールを使用してポートレベルの接続を確認します <airflow-web-server-address-443>。
それでも問題が解決しない場合は、ブラウザにウェブプロキシが設定されているかどうかを確認します。設定されている場合は、テスト用にプロキシを無効にするか、プロキシ設定で問題を修正します。
Linux 踏み台ホスト
踏み台ホストは、インターネットとプライベートサブネットの間の仲介役として使用できます。ホストは通常、SSH サーバーが稼働している Linux マシンです。踏み台ホストへの SSH トンネルを確立することで、Amazon VPC 内のリソースにアクセスできます。その後、FoxyProxy などのブラウザプロキシを使用すると、SSH トンネル経由で Apache Airflow UI を開くことができます。Linux bastion ホストを設定するには、「チュートリアル: Linux 踏み台ホストを使用してプライベートネットワークアクセスを設定する」を参照してください。
Windows マシンなどのグラフィカルユーザーインターフェイス (GUI) を備えた Amazon Elastic Compute Cloud (Amazon EC2) インスタンスがある場合は、そのインスタンスを使用して Apache Airflow UI にアクセスできます。
ロードバランサー
インターネットとプライベートサブネットの間の仲介役として、ロードバランサーを使用することもできます。踏み台ホストとは異なり、ロードバランサーのアドレスには追加の設定を行わず、直接アクセスできます。
ロードバランサーを設定するには、次の手順を実行します。
- MWAA ウェブサーバーのプライベート IP アドレスを特定します。これらの IP アドレスを取得するには、Apache Airflow UI のアドレスに DNS ルックアップを実行します (dig +short) <airflow-web-server-address>。
- Amazon MWAA ウェブサーバーのプライベート IP アドレス用のターゲットグループを作成します。
- ターゲットグループのヘルスチェックを設定し、Matcher 用の 200 と 302 を含めます。
注: この設定を行わないと、Apache Airflow Web サーバーが 302 Redirect で応答したときに、ターゲットに unhealthy フラグが立てられる場合があります。
- HTTPS リスナーと作成されたターゲットグループを使用して Application Load Balancer を作成します。
注: HTTPS リスナーを作成する前に、SSL 証明書が必要です。任意のドメインまたはサブドメインにサインインすると、AWS Certificate Manager (ACM) で SSL 証明書を作成できます。
- 作成した Application Load Balancer のアドレスを使用して、Apache Airflow UI へのアクセスをテストします。
注: Amazon MWAA には、Apache Airflow UI にアクセスするためのウェブログイントークンが必要です。したがって、Application Load Balancer から Apache Airflow UI にアクセスするときは、ウェブログイントークンを作成し、このトークンをクエリ文字列として渡す必要があります。このトークンの作成を自動化する方法については、「フェデレーション ID を使用してプライベート Amazon MWAA 環境にアクセスする」を参照してください。
関連情報
Apache Airflow のアクセスモード
Apache Airflow UI にアクセスする