View a markdown version of this page

教程:使用 Linux 堡垒主机配置私有网络访问权限 - Amazon Managed Workflows for Apache Airflow

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:使用 Linux 堡垒主机配置私有网络访问权限

本教程将引导您完成为适用于 Apache Airflow 的亚马逊托管工作流环境创建从计算机到 Apache Airflow 网络服务器的 SSH 隧道的步骤。本教程假设您已经创建了 Amazon MWAA 环境。设置完成后,Linux 堡垒主机将充当跳转服务器,允许计算机与 VPC 中的资源进行安全连接。然后,您可以使用 SOCKS 代理管理插件来控制浏览器中的代理设置,以访问您的 Apache Airflow 用户界面。

注意

本教程适用于私有网络访问模式。如果您选择 “同时访问公共和私有网络”,则无需堡垒主机即可访问 Apache Airflow UI,因为它可以通过互联网访问。

私有网络

本教程假设您已为 Apache Airflow Web 服务器选择了私有网络访问模式。

此图像显示了具有私有网络访问权限的 Amazon MWAA 环境的架构。

私有网络访问模式将访问 Apache Airflow UI 的权限限制为 Amazon VPC 中已获准访问环境 IAM 策略的用户。

创建具有私有网络访问权限的环境时,必须将所有依赖项打包到 Python wheel 存档 (.whl) 中,然后在.whl中引用requirements.txt。有关使用 Wheel 打包和安装依赖项的说明,请参阅使用 Python Wheel 管理依赖项。

下图描述了在 Amazon MWAA 控制台上哪里可以找到私有网络选项。

此图描述了在 Amazon MWAA 控制台上哪里可以找到私有网络选项。

使用案例

您可以在创建 Amazon MWAA 环境后使用本教程。您必须使用与环境相同的 Amazon VPC、VPC 安全组和公有子网。

开始前的准备工作

  1. 检查用户权限。请确保您在 AWS Identity and Access Management (IAM) 中的账户有足够的权限来创建和管理 VPC 资源。

  2. 使用 Amazon MWAA VPC。本教程假定您将堡垒主机关联到 VPC。Amazon VPC 必须与 Amazon MWAA 环境位于同一区域,并且拥有两个私有子网,如 创建 VPC 网络 中所定义。

  3. 创建 SSH 密钥。您需要在与 Amazon MWAA 环境相同的区域创建 Amazon EC2 SSH 密钥(.pem)才能连接到虚拟服务器。如果您没有 SSH 密钥,请参阅《Amazon EC2 用户指南》中的创建或导入密钥对。

目标

在本教程中,您将执行以下操作:

  1. 使用现有 VPC 的CloudFormation 模板创建 Linux 堡垒主机实例。

  2. 使用端口 22 上的入口规则授权进入堡垒机实例安全组的入站流量。

  3. 授权从 Amazon MWAA 环境的安全组流向堡垒机实例的安全组的入站流量。

  4. 创建通往堡垒机实例的 SSH 隧道。

  5. 安装并配置 Firefox 浏览器的 FoxyProxy 插件以访问 Apache Airflow 用户界面。

步骤 1:创建堡垒实例

下一节介绍创建 Linux 堡垒实例的步骤。

在上打开亚马逊弹性计算云控制台 https://console.aws.amazon.com/ec2/,然后在 VPC 中用于亚马逊 MWAA 环境的公有子网之一中创建亚马逊 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 转发的原因。

macOS/Linux
使用命令行创建隧道
  1. 打开 Amazon EC2 控制台的实例页面。

  2. 选择一个实例。

  3. 复制公有 IPv4 DNS下的 IP 地址。例如 ec2-4-82-142-1.compute-1.amazonaws.com。

  4. 在命令提示符下,导航到存储 SSH 密钥的目录。

  5. 运行以下命令以使用 SSH 连接堡垒机实例。将示例值替换为 mykeypair.pem 中的 SSH 密钥名称。

    ssh -i mykeypair.pem -N -D 8157 ec2-user@YOUR_PUBLIC_IPV4_DNS
Windows (PuTTY)
使用 PuTTTY 创建隧道
  1. 打开 Amazon EC2 控制台的实例页面。

  2. 选择一个实例。

  3. 复制公有 IPv4 DNS下的 IP 地址。例如 ec2-4-82-142-1.compute-1.amazonaws.com。

  4. 打开 Putty,选择会话。

  5. 在 “主机名” 中将主机名输入为 ec2-user@YOUR_PUBLIC_IPV4_DNS,将端口输入为。 22

  6. 展开 SSH 选项卡,选择身份验证。在用于身份验证的私钥文件中,选择本地“ppk”文件。

  7. 在 SSH 下,选择隧道选项卡,然后选择动态和自动选项。

  8. 在源端口中,添加 8157 端口(或任何其他未使用的端口),然后将目标端口留空。选择添加。

  9. 选择会话选项卡并输入会话名称。例如 SSH Tunnel。

  10. 选择保存,打开。

    注意

    您可能需要为公有密钥输入密码短语。

注意

如果您收到Permission denied (publickey)错误,我们建议您使用该AWSSupport-TroubleshootSSH工具,然后选择 “运行此自动化(控制台)” 对 SSH 设置进行故障排除。

步骤 3:将堡垒机安全组配置为入站规则

通过与这些服务器关联的特殊维护安全组,允许从服务器访问服务器和定期访问互联网。以下步骤介绍如何将堡垒机安全组配置为某环境的 VPC 安全组的入站流量来源。

  1. 在 Amazon MWAA 控制台上打开环境页面。

  2. 选择环境。

  3. 在联网窗格上,选择 VPC 安全组。

  4. 选择编辑入站规则。

  5. 选择添加规则。

  6. 在源下拉列表中选择 VPC 安全组 ID。

  7. 将其余选项留空,或将其设置为默认值。

  8. 选择保存规则。

步骤 4:复制 Apache Airflow URL

以下步骤介绍如何打开 Amazon MWAA 控制台并将 URL 复制到 Apache Airflow UI。

  1. 在 Amazon MWAA 控制台上打开环境页面。

  2. 选择环境。

  3. 在 Airflow UI中复制 URL 以执行后续步骤。

步骤 5:配置代理设置

如果您使用带有动态端口转发的 SSH 隧道,则必须使用 SOCKS 代理管理附加组件来控制浏览器中的代理设置。例如,您可以使用 Chromium 的--proxy-server功能启动浏览器会话,或者在 Mozilla FireFox 浏览器中使用该 FoxyProxy 扩展程序。

选项一:使用本地端口转发设置 SSH 隧道

如果您不想使用 SOCKS 代理,您可以使用本地端口转发设置 SSH 隧道。以下示例命令通过在本地端口 8157 上转发流量来访问 Apache Airflow 网络服务器。

  1. 打开新的命令提示符窗口。

  2. 输入以下命令以打开 SSH 隧道。

    ssh -i mykeypair.pem -N -L 8157:YOUR_VPC_ENDPOINT_ID-vpce.us-east-1.airflow.amazonaws.com:443 ec2-user@YOUR_PUBLIC_IPV4_DNS

    -L 代表使用本地端口转发,由此,您就能指定一个本地端口,用于将数据转发到节点的本地 Web 服务器上标识的远程端口。

  3. 在浏览器中输入 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 代理服务器。

  1. 在 Firefox 中,打开FoxyProxy 标准扩展页面。

  2. 选择添加到 Firefox。

  3. 选择添加。

  4. 在浏览器工具栏中选择 FoxyProxy 图标,选择 “选项” 。

  5. 复制以下代码并在本地另存为 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" }
  6. 在 “从 FoxyProxy 6.0+ 导入设置” 窗格上,选择 “导入设置” 并选择文件。mwaa-proxy.json

  7. 选择确定。

步骤 6:打开 Apache Airflow UI

以下步骤介绍如何打开 Apache Airflow UI。

  1. 在 Amazon MWAA 控制台上打开环境页面。

  2. 选择打开 Airflow UI。

接下来做什么?