我想解决 Amazon Managed Workflows for Apache Airflow (Amazon MWAA) 中的 Apache Airflow 用户界面访问问题。
简短描述
当您尝试在 Amazon MWAA 中访问 Apache Airflow 用户界面时,可能会收到 Oops, something went wrong(对不起,发生了错误)或 403 Forbidden(403 禁止访问)错误。当您的 AWS Identity and Access Management (IAM) 角色没有必要的权限时,就会发生这些错误。
您还可能会收到服务器错误和 5xx 错误。这些错误是由于 DNS 问题、Amazon Virtual Private Cloud (Amazon VPC) 连接问题或与环境要求不兼容所致。
Amazon MWAA 为 Apache Airflow 用户界面提供公共和私有网络访问模式。如果您在私有模式下收到连接超时错误,请确保在 Amazon VPC 中正确配置中间机制。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
解决“Oops, something went wrong”(对不起,发生了错误)错误或 403 Forbidden(403 禁止访问)错误
要对 Oops, something went wrong(对不起,发生了错误)错误或 403 Forbidden(403 禁止访问)错误进行故障排除,请检查 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 替换为您的 AWS 账户 ID,将 example-role 替换为 Admin(管理)、Op(运维)、User(用户)、Viewer(查看器)或 Public(公共)。对于用户界面访问权限,您的 IAM 访问策略必须与 Apache Airflow 支持的预定义的基于角色的访问控制 (RBAC) 角色保持一致。有关详细信息,请参阅 Apache Airflow 用户界面访问策略: AmazonMWAAWebServerAccess。
解决因网络登录令牌过期而导致的 403 Forbidden(403 禁止)错误
Web 登录令牌的有效期为 60 秒。要访问私有 Web 服务器,请使用堡垒主机或 AWS Client VPN 等机制。
要在访问用户界面之前生成 Web 登录令牌,请运行 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 环境名称。
要访问应用程序负载均衡器后面的 Apache Airflow 用户界面,请使用以下格式作为 URL:
https://example-alb-dns/aws_mwaa/aws-console-sso?login=true#example-web-token
**注意:**将 example-alb-dns 替换为您的应用程序负载均衡器 DNS,将 example-web-token 替换为您的 Web 令牌。
要访问 Amazon VPC,请使用浏览器扩展(例如 LiveHosts 或内部重定向器)将 Airflow 端点重定向到应用程序负载均衡器 DNS。
对服务器错误和 5xx 错误进行故障排除
在开始之前,从 AWS Support 工具运行 Amazon MWAA 验证脚本来检查您的环境的运行状况。有关详细信息,请参阅 GitHub 网站上的 aws-support-tools。然后,检查您的执行角色权限、DNS 设置和网络配置以及您的资源争用情况。
检查您的执行角色权限
要查看和编辑您的执行角色策略,请参阅查看和更新执行角色策略。
检查您的 DNS 设置和网络配置
确保您的 DNS 设置和网络配置允许访问 Web 服务器和元数据库。
要对 DNS 设置和网络配置进行故障排除,请执行以下操作:
检查您的资源争用情况
CPU 和内存利用率高的调度器、Web 服务器和 Worker 组件可能会导致用户界面访问问题。此外,不正确的 DAG 语法或兼容性问题可能会导致资源争用。如果出现这些问题,则当您访问 Airflow 用户界面时,您会收到错误 Oops, something bad has happened(对不起,发生了错误)或 5xx 错误。要检查是否存在资源争用情况,请查看您的 CPUUtilization 和 MemoryUtilization Amazon CloudWatch 指标以确定是否存在 CPU 和内存使用率过高的情况。
要确定您的某个 DAG 是否导致了访问问题,请在 Amazon Simple Storage Service (Amazon S3) 中从环境的 DAG 位置移除所有 Python 文件。然后,逐一添加它们并监控用户界面访问或性能的变化,以识别受影响的 DAG。
有关详细信息,请参阅如何解决我的调度器在 Amazon MWAA 中的常见问题?
查看您的 Python 软件包版本要求
不兼容的 Python 软件包版本可能会导致 Airflow 用户界面访问问题。要解决此问题,请检查是否存在不兼容的依赖项或缺少的约束条件。另外,在 CloudWatch 中查看 Airflow 调度器、Worker 和 Web 服务器的 Airflow 日志。检查与 DAG 处理、必备组件安装情况或插件运行时相关的错误。
有关详细信息,请参阅如何在我的 Amazon MWAA 环境中安装库?
相关信息
我在访问 Web 服务器时收到 5xx 错误