如何在我的 Amazon MWAA 环境中使用私有网络访问模式访问 Apache Airflow 用户界面?

上次更新日期:2022 年 2 月 23 日

当我试图在我的 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 终端节点。因此,访问 Apache Airflow 用户界面需要访问 VPC。私有网络访问模式需要额外的联网设置。

解决方法

您可以使用以下方法之一在私有网络访问模式下访问 Apache Airflow Web 服务器。

AWS Direct Connect 或 VPN

如果您通过 AWS Direct Connect 或 VPN 连接将本地部署的网络连接到 Amazon VPC,请咨询您的联网团队以配置对 Amazon MWAA Web 服务器地址的访问权限。建立网络路径后,检查与环境相关的安全组,以确保 Amazon MWAA Web 服务器允许来自源 IP 或子网的 HTTPS (TCP 443) 流量。您还可以使用 Amazon Client VPN 配置私有网络访问权限。

如果您仍然遇到问题,请尝试以下操作:

  • 使用诸如 nslookup 或 dig (dig<airflow-web-server-address>) 之类的工具验证 DNS 解析。
  • 使用诸如 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 用户界面。

负载均衡器

您还可以使用负载均衡器作为互联网和私有子网之间的中介。与堡垒主机不同的是,负载均衡器的地址可以直接访问,无需进行任何额外设置。

要配置负载均衡器,请执行以下操作:

  1. 确定 MWAA Web 服务器的私有 IP 地址。要获取这些 IP 地址,请在 Apache Airflow 用户界面地址 (dig + short<airflow-web-server-address>) 中进行 DNS 查找。
  2. 为 Amazon MWAA Web 服务器的私有 IP 地址创建一个目标组。
  3. 配置目标组的运行状况检查设置,使其包括 Matcher200302
    注意: 如果没有此设置,当 Apache Airflow Web 服务器响应 302 重新导向时,目标可能会被标记为运行状况不正常。
  4. 使用 HTTPS 侦听器和创建的目标组创建 Application Load Balancer
    注意:在创建 HTTPS 侦听器之前,您必须拥有 SSL 证书。您可以通过登录自己选择的域或子域来使用 Amazon Certificate Manager (ACM) 创建 SSL 证书。
  5. 使用您创建的 Application Load Balancer 的地址测试对 Apache Airflow 用户界面的访问权限。

注意:Amazon MWAA 需要网络登录令牌才能访问 Apache Airflow 用户界面。因此,您需要创建 web 登录令牌,并在通过 Application Load Balancer 访问 Apache Airflow 用户界面时将该令牌作为查询字符串进行传递。要自动创建此令牌,请参阅使用联合身份访问私有 Amazon MWAA 环境


这篇文章对您有帮助吗?


您是否需要账单或技术支持?