本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:使用 Linux 堡垒主机配置私有网络访问权限
本教程将引导您完成为适用于 Apache Airflow 的亚马逊托管工作流环境创建从计算机到 Apache Airflow 网络服务器的 SSH 隧道的步骤。本教程假设您已经创建了 Amazon MWAA 环境。设置完成后,Linux 堡垒主机将充当跳转服务器,允许计算机与 VPC 中的资源进行安全连接。然后,您可以使用 SOCKS 代理管理插件来控制浏览器中的代理设置,以访问您的 Apache Airflow 用户界面。
注意
本教程适用于私有网络访问模式。如果您选择 “同时访问公共和私有网络”,则无需堡垒主机即可访问 Apache Airflow UI,因为它可以通过互联网访问。
Sections
私有网络
本教程假设您已为 Apache Airflow Web 服务器选择了私有网络访问模式。
私有网络访问模式将访问 Apache Airflow UI 的权限限制为 Amazon VPC 中已获准访问环境 IAM 策略的用户。
创建具有私有网络访问权限的环境时,必须将所有依赖项打包到 Python wheel 存档 (.whl) 中,然后在.whl中引用requirements.txt。有关使用 Wheel 打包和安装依赖项的说明,请参阅使用 Python Wheel 管理依赖项。
下图描述了在 Amazon MWAA 控制台上哪里可以找到私有网络选项。
使用案例
您可以在创建 Amazon MWAA 环境后使用本教程。您必须使用与环境相同的 Amazon VPC、VPC 安全组和公有子网。
开始前的准备工作
目标
在本教程中,您将执行以下操作:
-
使用现有 VPC 的CloudFormation 模板
创建 Linux 堡垒主机实例。 -
使用端口
22上的入口规则授权进入堡垒机实例安全组的入站流量。 -
授权从 Amazon MWAA 环境的安全组流向堡垒机实例的安全组的入站流量。
-
创建通往堡垒机实例的 SSH 隧道。
-
安装并配置 Firefox 浏览器的 FoxyProxy 插件以访问 Apache Airflow 用户界面。
步骤 1:创建堡垒实例
下一节介绍创建 Linux 堡垒实例的步骤。
在上打开亚马逊弹性计算云控制台 https://console.aws.amazon.com/ec2/
注意
我们建议您允许在 Amazon EC2 实例上进行 TCP 转发。TCP 转发意味着 SSH TCP 转发——允许ssh -L/-D隧道穿过主机。SSH 守护程序配置 (/etc/ssh/sshd_config) 中的AllowTcpForwarding指令控制此设置。它yes在大多数亚马逊 Linux 和 Ubuntu AMI 上默认为,但在经过强化的堡垒 AMI 上通常处于禁用状态。
第 2 步:创建 SSH 隧道
以下步骤描述了如何创建通往 Linux 堡垒的 SSH 隧道。SSH 隧道接收来自您的本地 IP 地址到 Linux 堡垒的请求,这就是前面步骤true中将 Linux 堡垒的 TCP 转发设置为 TCP 转发的原因。
注意
如果您收到Permission denied (publickey)错误,我们建议您使用该AWSSupport-TroubleshootSSH工具,然后选择 “运行此自动化(控制台)” 对 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 上转发流量来访问 Apache Airflow 网络服务器。
-
打开新的命令提示符窗口。
-
输入以下命令以打开 SSH 隧道。
ssh -imykeypair.pem-N -L 8157:YOUR_VPC_ENDPOINT_ID-vpce.us-east-1.airflow.amazonaws.com:443 ec2-user@YOUR_PUBLIC_IPV4_DNS-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.us-east-1.airflow.amazonaws.com/home.
选项三:用 FoxyProxy 于 Mozilla Firefox 的代理
以下示例演示了 Mozilla Firefox 的 FoxyProxy 标准(版本 7.5.1)配置。 FoxyProxy 提供了一组代理管理工具。该工具使您可以使用与 Apache Airflow UI 所使用的域对应模式相匹配的 URL 代理服务器。
-
在 Firefox 中,打开FoxyProxy 标准
扩展页面。 -
选择添加到 Firefox。
-
选择添加。
-
在浏览器工具栏中选择 FoxyProxy 图标,选择 “选项” 。
-
复制以下代码并在本地另存为
mwaa-proxy.json。将示例值替换为你的 Apache Airflow 网址。YOUR_HOST_NAME{ "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 Airflow CLI 命令参考。
-
要了解如何将 DAG 代码上传到 Amazon S3 存储桶,请参阅 添加或更新 DAG。