当我尝试在我的 Amazon Managed Workflows for Apache Airflow (Amazon MWAA) 环境中打开 Apache Airflow 用户界面时,收到“Connection timed out”(连接超时)错误。
简短描述
Amazon MWAA 环境为 Apache Airflow 用户界面提供公开和私密访问模式。在公开访问模式下,Apache Airflow Web 服务器向互联网开放,无需任何额外设置即可访问。但是,您无法使用安全组控制 Apache Airflow Web 服务器的网络访问权限。因此,与私密访问模式相比,此选项被认为不太安全。在私密访问模式下,Apache Airflow Web 服务器仅在环境中的 Amazon Virtual Private cloud (Amazon VPC) 中公开。Amazon MWAA 会在您的 VPC 中为每个环境创建 VPC 端点。因此,对 VPC 的访问权限是访问 Apache Airflow 用户界面所必需的。私密网络访问模式需要额外的网络设置。
解决方法
您可以使用以下方法之一以私密网络访问模式访问 Apache Airflow Web 服务器。
AWS Direct Connect 或 VPN
如果您拥有 AWS Direct Connect 或 VPN 连接可将您的本地网络连接到 Amazon VPC,请咨询您的网络团队以配置对 Amazon MWAA Web 服务器地址的访问权限。建立网络路径后,检查与环境相关联的安全组,以确保 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>。
如果问题仍然存在,请检查浏览器是否已配置 Web 代理。在这种情况下,请尝试禁用代理进行测试或修复代理配置中的问题。
Linux 堡垒主机
堡垒主机可用作互联网和私有子网之间的中介。主机通常是一台运行 SSH 服务器的 Linux 计算机。您可以建立通往堡垒主机的 SSH 隧道以访问您的 Amazon VPC 中的资源。然后,您可以使用浏览器代理(例如 FoxyProxy),通过 SSH 隧道打开 Apache Airflow 用户界面。要设置 Linux 堡垒主机,请参阅教程: 使用 Linux 堡垒主机配置私密网络访问权限。
如果您拥有带有图形用户界面 (GUI) 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例(例如 Windows 计算机),则可以使用此实例访问 Apache Airflow 用户界面。
负载均衡器
您也可以使用负载均衡器作为互联网和私有子网之间的中介。与堡垒主机不同,您无需任何额外设置即可直接访问负载均衡器的地址。
要配置负载均衡器,请执行以下操作:
- 识别 MWAA Web 服务器的私有 IP 地址。要获取这些 IP 地址,请在 Apache Airflow 用户界面地址上进行 DNS 查询 (dig +short <airflow-web-server-address>)。
- 为 Amazon MWAA Web 服务器的私有 IP 地址创建目标组。
- 将目标组的运行状况检查设置配置为包括 Matcher 的 200 和 302。
**注意:**如果没有此设置,当 Apache Airflow Web 服务器以 302 Redirect 进行响应时,目标可能会被标记为不正常。
- 在已创建 HTTPS 侦听器和目标组的情况下创建应用程序负载均衡器。
注意: 在创建 HTTPS 侦听器之前,您必须拥有 SSL 证书。您可以通过登录您选择的域或子域来使用 AWS Certificate Manager (ACM) 创建 SSL 证书。
- 使用您创建的应用程序负载均衡器的地址测试对 Apache Airflow 用户界面的访问权限。
**注意:**Amazon MWAA 需要 Web 登录令牌才能访问 Apache Airflow 用户界面。因此,在通过应用程序负载均衡器访问 Apache Airflow 用户界面时,您需要创建 Web 登录令牌并将此令牌作为查询字符串传递。要自动创建此令牌,请参阅使用联合身份访问私有 Amazon MWAA 环境。
相关信息
Apache Airflow 访问模式
访问 Apache Airflow 用户界面