Amazon Managed Workflows for Apache Airflow (Amazon MWAA) で発生する、Apache Airflow UI アクセスの問題をトラブルシューティングしたいです。
簡単な説明
Amazon MWAA で Apache Airflow UI にアクセスしようとすると、「何らかの問題が発生しました」と表示されたり、403 Forbidden エラーが発生したりする場合があります。これらのエラーは、AWS Identity and Access Management (IAM) ロールに必要なアクセス許可がない場合に発生します。
サーバーエラーや 5xx エラーが発生する場合もあります。これらのエラーは、DNS の問題、Amazon Virtual Private Cloud (Amazon VPC) 接続の問題、環境の要件などとの非互換性が原因で発生します。
Amazon MWAA では、Apache Airflow UI に Public および Private ネットワークアクセスモードが用意されています。Private モードで接続タイムアウトエラーが発生した場合は、Amazon VPC に中間メカニズムが正しく設定されていることを確認してください。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
「何らかの問題が発生しました」エラーまたは 403 Forbidden エラーのトラブルシューティング
「何らかの問題が発生しました」または 403 Forbidden エラーをトラブルシューティングするには、IAM ロールの IAM アクセスポリシーに関するアクセス許可を確認します。IAM アクセスロールポリシーを編集し、airflow:CreateWebLoginToken アクセス許可を含めます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "airflow:CreateWebLoginToken",
"Resource": "arn:aws:airflow:example-region:example-account-id:role/example-mwaa-environment/example-role";
}
]
}
注: example-region をお使いの AWS リージョンに、example-account-id を実際のアカウント ID に置き換えます。example-role は、Admin、Op、User、Viewer、Public のいずれかに置き換えます。UI アクセスについては、IAM アクセスポリシーが Apache Airflow がサポートする定義済みのロールベースのアクセス制御 (RBAC) ロールと一致している必要があります。詳細については、「Apache Airflow UI アクセスポリシー: AmazonMWAAWebServerAccess」を参照してください。
ウェブログイントークンの期限切れによる 403 Forbidden エラーのトラブルシューティング
ウェブログイントークンの有効期間は 60 秒です。プライベートウェブサーバーへのアクセスには、Bastion Host や AWS Client VPN などのメカニズムを使用してください。
UI にアクセスする前にウェブログイントークンを生成するには、create-web-login-token コマンドを実行します。
token=$(aws mwaa create-web-login-token --name example-mwaa-environment)
WEB_TOKEN=$(echo $token | jq --raw-output '.WebToken')
echo $WEB_TOKEN
注: example-mwaa-environment をお使いの Amazon MWAA 環境名に置き換えてください。
Application Load Balancer の背後にある Apache Airflow UI にアクセスするには、URL に次の形式を使用します。
https://example-alb-dns/aws_mwaa/aws-console-sso?login=true#example-web-token
注: お使いのものでそれぞれ、example-alb-dns を Application Load Balancer の DNS に、example-web-token をウェブトークンに置き換えます。
Amazon VPC にアクセスするには、LiveHosts や Internal Redirector などのブラウザ拡張機能を使用して、Airflow エンドポイントを Application Load Balancer の DNS にリダイレクトします。
サーバーエラーと 5xx エラーのトラブルシューティング
開始する前に、AWS サポートツールの Amazon MWAA 検証スクリプトを実行して環境の状態を確認してください。詳細については、GitHub のウェブサイトで「aws-support-tools」を参照してください。次に、実行ロールのアクセス許可、DNS 設定とネットワーク構成、リソースの競合を確認します。
実行ロールのアクセス許可を確認する
実行ロールポリシーを確認して編集するには、「実行ロールポリシーの確認と更新」を参照してください。
DNS 設定とネットワーク設定を確認する
DNS 設定とネットワーク構成で、ウェブサーバーとメタデータベースへのアクセスが許可されていることを確認します。
DNS 設定とネットワーク構成をトラブルシューティングするには、次の操作を行います。
リソースの競合をチェックする
CPU とメモリの使用率が高いスケジューラー、ウェブサーバー、ワーカーコンポーネントは、UI アクセスの問題の原因となる可能性があります。また、DAG 構文が正しくない場合や、互換性の問題がある場合、リソースの競合が発生する可能性があります。これらの問題が発生した場合、Airflow UI にアクセスしたときに「何らかの問題が発生しました」や、5xx エラーが表示されます。リソースの競合をチェックするには、Amazon CloudWatch メトリクス CPUUtilization および MemoryUtilization で、CPU とメモリの使用率が高いかどうかを確認してください。
いずれかの DAG がアクセス問題の原因であるかどうかを判断するには、Amazon Simple Storage Service (Amazon S3) 内の環境の DAG がある場所から、すべての Python ファイルを削除します。次に、それらを 1 つずつ追加し直し、UI アクセスやパフォーマンスの変化を監視すると、影響を受けている DAG を特定できます。
詳細については、「Amazon MWAA で、スケジューラーに関する一般的な問題を解決する方法を教えてください」を参照してください。
Python パッケージのバージョン要件を確認する
Python パッケージのバージョンに互換性がないと、Airflow UI へのアクセスに問題が発生する可能性があります。この問題をトラブルシューティングするには、互換性のない依存関係や制約がないかどうかを確認します。CloudWatch の Airflow でも、Airflow スケジューラー、ワーカー、ウェブサーバーを確認します。DAG の処理、インストールの要件、プラグインのランタイムに関連するエラーを確認します。
詳細については、「Amazon MWAA 環境にライブラリをインストールする方法を教えてください」を参照してください。
関連情報
ウェブサーバーへのアクセス中に 5xx エラーが発生する