本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:使用 Linux 堡垒主机配置私有网络访问权限
本教程将引导您在 Amazon MWAA 环境中,如何创建从计算机到 Apache Airflow Web 服务器的 SSH 隧道。本教程假设您已经创建了 Amazon MWAA 环境。设置完成后,Linux 堡垒主机将充当跳转服务器,允许计算机与 VPC 中的资源进行安全连接。然后,您将使用 SOCKS 代理管理附加组件来控制浏览器中的代理设置,以访问 Apache Airflow UI。
Sections
私有网络
本教程假设您已为 Apache Airflow Web 服务器选择了私有网络访问模式。

私有网络访问模式将访问 Apache Airflow UI 的权限限制为 Amazon VPC 中已获准访问环境 IAM 策略的用户。
创建具有私有 Web 服务器访问权限的环境时,必须将所有依赖项打包到 Python Wheel 档案 (.whl
) 中,然后在 requirements.txt
中引用 .whl
。有关使用 Wheel 打包和安装依赖项的说明,请参阅使用 Python wheel 管理依赖项。
下图显示了在 Amazon MWAA 控制台上哪里可以找到私有网络选项。

使用案例
您可以在创建 Amazon MWAA 环境后使用本教程。您必须使用与环境相同的 Amazon VPC、VPC 安全组和公有子网。
开始前的准备工作
目标
在本教程中,您将执行以下操作:
-
使用现有 VPC 的AWS CloudFormation模板
创建 Linux 堡垒主机实例。 -
使用端口
22
上的入口规则授权进入堡垒机实例安全组的入站流量。 -
授权从 Amazon MWAA 环境的安全组流向堡垒机实例的安全组的入站流量。
-
创建通往堡垒机实例的 SSH 隧道。
-
安装并配置 Firefox 浏览器的 FoxyProxy 插件,以查看 Apache Airflow UI。
步骤 1:创建堡垒机实例
下一节介绍在 AWS CloudFormation 控制台上使用现有 VPC 的 AWS CloudFormation 模板
创建 Linux 堡垒主机
-
在 AWS CloudFormation 控制台上打开部署快速入门
页面。 -
使用导航栏中的区域选择器选择与 Amazon MWAA 环境相同的 AWS 区域。
-
选择下一步。
-
在堆栈名称文本字段中键入名称,例如
mwaa-linux-bastion
。 -
在参数、网络配置窗格上,选择以下选项:
-
选择 Amazon MWAA 环境的 VPC ID。
-
选择 Amazon MWAA 环境的公有子网 1 ID。
-
选择 Amazon MWAA 环境的公有子网 2 ID。
-
在允许的堡垒机外部访问 CIDR 中输入尽可能窄的地址范围(例如,内部 CIDR 范围)。
注意
识别范围的最简单方法是使用与公有子网相同的 CIDR 范围。例如,在 创建 VPC 网络 页面上的 AWS CloudFormation 模板中,公有子网为
10.192.10.0/24
和10.192.11.0/24
。
-
-
在 Amazon EC2 配置窗格上,选择以下选项:
-
在密钥对名称的下拉列表中选择 SSH 密钥。
-
在堡垒主机名中输入名称。
-
对于 TCP 转发,选择 true。
警告
在此步骤中,必须将 TCP 转发设置为 true。否则,您将无法在下一步创建 SSH 隧道。
-
-
选择下一步、下一步。
-
选择堆栈,然后选择创建堆栈。
要了解有关 Linux 堡垒主机架构的更多信息,请参阅AWS云上的 Linux 堡垒主机:架构。
步骤 2:创建 SSH 隧道
以下步骤介绍如何创建通往 Linux 堡垒机的 SSH 隧道。SSH 隧道接收从本地 IP 地址发送到 Linux 堡垒机的请求,这就是为何在前述步骤中将 Linux 堡垒机的 TCP 转发设置为 true
。
注意
如果您收到 Permission denied (publickey)
错误,我们建议您使用 awsSupport-TroubleshotsSH 工具,然后选择运行此自动化(控制台)来排查 SSH 设置故障。
步骤 3:将堡垒机安全组配置为入站规则
通过与这些服务器关联的特殊维护安全组,允许从服务器访问服务器和定期访问互联网。以下步骤介绍如何将堡垒机安全组配置为某环境的 VPC 安全组的入站流量来源。
-
在 Amazon MWAA 控制台上打开环境页面
。 -
选择环境。
-
在联网窗格上,选择 VPC 安全组。
-
选择编辑入站规则。
-
选择添加规则。
-
在源下拉列表中选择 VPC 安全组 ID。
-
将其余选项留空,或将其设置为默认值。
-
选择保存规则。
步骤 4:复制 Apache Airflow URL
以下步骤介绍如何打开 Amazon MWAA 控制台并将 URL 复制到 Apache Airflow UI。
-
在 Amazon MWAA 控制台上打开环境页面
。 -
选择环境。
-
在 Airflow UI中复制 URL 以执行后续步骤。
步骤 5:配置代理设置
如果您使用带有动态端口转发的 SSH 隧道,则必须使用 SOCKS 代理管理附加组件来控制浏览器中的代理设置。例如,您可以使用 Chromium 的 --proxy-server
功能来启动浏览器会话,或者在 Mozilla FireFox 浏览器中使用 FoxyProxy 扩展程序。
选项一:使用本地端口转发设置 SSH 隧道
如果您不想使用 SOCKS 代理,您可以使用本地端口转发设置 SSH 隧道。以下示例命令通过转发本地端口 8157 上的流量来访问 Amazon EC2 资源管理器 Web 界面。
-
打开新的命令提示符窗口。
-
键入以下命令以打开 SSH 隧道。
ssh -i
mykeypair.pem
-N -L 8157:YOUR_VPC_ENDPOINT_ID
-vpce.YOUR_REGION
.airflow.amazonaws.com:443 ubuntu@YOUR_PUBLIC_IPV4_DNS
.YOUR_REGION
.compute.amazonaws.com-L
代表使用本地端口转发,由此,您就能指定一个本地端口,用于将数据转发到节点本地 Web 服务器上标识的远程端口。 -
在浏览器中键入
http://localhost:8157/
。注意
您可能需要使用
https://localhost:8157/
。
选项二:通过命令行进行代理
大多数 Web 浏览器都允许您通过命令行或配置参数来配置代理。例如,使用 Chromium,您可以在 Chromium 中通过以下命令启动浏览器:
chromium --proxy-server="socks5://localhost:8157"
这将启动浏览器会话,该会话使用您在前述步骤中创建的 SSH 隧道来代理其请求。您可以按如下方式打开 Amazon MWAA 私有环境 URL(使用 https://):
https://
YOUR_VPC_ENDPOINT_ID
-vpce.YOUR_REGION
.airflow.amazonaws.com/home.
选项三:在 Mozilla Firefox 上使用 FoxyProxy 的代理
以下示例演示了 Mozilla Firefox 的 FoxyProxy Standard(版本 7.5.1)配置。FoxyProxy 提供了一套代理管理工具。该工具使您可以使用与 Apache Airflow UI 所使用的域对应模式相匹配的 URL 代理服务器。
-
在 FireFox 中,打开 FoxyProxy Standard
扩展页面。 -
选择添加到 Firefox。
-
选择添加。
-
在浏览器工具栏中选择 FoxyProxy 图标,然后选择选项。
-
复制以下代码并在本地另存为
mwaa-proxy.json
。将YOUR_HOST_NAME
中的示例值替换为 Apache Airflow URL。{ "e0b7kh1606694837384": { "type": 3, "color": "#66cc66", "title": "airflow", "active": true, "address": "localhost", "port": 8157, "proxyDNS": false, "username": "", "password": "", "whitePatterns": [ { "title": "airflow-ui", "pattern": "
YOUR_HOST_NAME
", "type": 1, "protocols": 1, "active": true } ], "blackPatterns": [], "pacURL": "", "index": -1 }, "k20d21508277536715": { "active": true, "title": "Default", "notes": "These are the settings that are used when no patterns match a URL.", "color": "#0055E5", "type": 5, "whitePatterns": [ { "title": "all URLs", "active": true, "pattern": "*", "type": 1, "protocols": 1 } ], "blackPatterns": [], "index": 9007199254740991 }, "logging": { "active": true, "maxSize": 500 }, "mode": "patterns", "browserVersion": "82.0.3", "foxyProxyVersion": "7.5.1", "foxyProxyEdition": "standard" } -
在从 FoxyProxy 6.0+ 导入设置窗格上,选择导入设置,然后选择
mwaa-proxy.json
文件。 -
选择确定。
步骤 6:打开 Apache Airflow UI
以下步骤介绍如何打开 Apache Airflow UI。
-
在 Amazon MWAA 控制台上打开环境页面
。 -
选择打开 Airflow UI。
接下来做什么?
-
要了解如何在 baol 通往堡垒主机的 SSH 隧道上运行 Airflow CLI 命令,请参阅 Apache 气流命令参考 CLI。
-
要了解如何将 DAG 代码上传到 Amazon S3 存储桶,请参阅 添加或更新 DAGs。