教學課程:使用 Linux 堡壘主機設定私有網路存取 - Amazon Managed Workflows for Apache Airflow

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:使用 Linux 堡壘主機設定私有網路存取

本教學課程將逐步引導您建立 SSH 通道,從您的電腦到 Amazon Managed Workflows for Apache Airflow 環境的 Apache Airflow Web 伺服器。它假設您已建立 Amazon MWAA 環境。設定完成後,Linux 堡壘主機會充當跳轉伺服器,允許從您的電腦安全連線至 VPC 中的資源。然後,您將使用 SOCKS 代理管理附加元件來控制瀏覽器中的代理設定,以存取您的 Apache Airflow UI。

私有網路

本教學假設您已為 Apache Airflow Web 伺服器選擇私有網路存取模式。

此影像顯示具有私有 Web 伺服器的 Amazon MWAA 環境架構。

私有網路存取模式會將對 Apache Airflow UI 的存取限制在 Amazon VPC 中已授予您環境 IAM 政策存取權的使用者。

當您建立具有私有 Web 伺服器存取權的環境時,您必須在 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. 使用AWS CloudFormation 現有 VPC 的範本建立 Linux 堡壘主機執行個體。

  2. 使用連接埠 上的輸入規則,將傳入流量授權至堡壘執行個體的安全群組22

  3. 授權從 Amazon MWAA 環境安全群組到堡壘執行個體安全群組的傳入流量。

  4. 建立堡壘執行個體的 SSH 通道。

  5. 安裝並設定 Firefox 瀏覽器的 FoxyProxy 附加元件,以檢視 Apache Airflow UI。

步驟一:建立堡壘執行個體

下一節說明使用 AWS CloudFormation 主控台上AWS CloudFormation 現有 VPC 的範本建立 linux 堡壘執行個體的步驟。

建立 Linux 堡壘主機
  1. 在 AWS CloudFormation 主控台上開啟部署 Quick Start 頁面。

  2. 使用導覽列中的區域選擇器,選擇與 Amazon MWAA 環境相同的 AWS 區域。

  3. 選擇下一步

  4. 堆疊名稱文字欄位中輸入名稱,例如 mwaa-linux-bastion

  5. 參數網路組態窗格中,選擇下列選項:

    1. 選擇 Amazon MWAA 環境的 VPC ID

    2. 選擇 Amazon MWAA 環境的公有子網路 1 ID

    3. 選擇 Amazon MWAA 環境的公有子網路 2 ID

    4. 允許堡壘外部存取 CIDR 中輸入最窄的可能地址範圍 (例如,內部 CIDR 範圍)。

      注意

      識別範圍最簡單的方法是使用與公有子網路相同的 CIDR 範圍。例如, 建立 VPC 網路頁面上 AWS CloudFormation 範本中的公有子網路為 10.192.10.0/2410.192.11.0/24

  6. Amazon EC2 組態窗格中,選擇下列項目:

    1. 在金鑰對名稱的下拉式清單中選擇您的 SSH 金鑰

    2. 堡壘主機名稱中輸入名稱

    3. 針對 TCP 轉送選擇 true

      警告

      在此步驟中,TCP 轉送必須設定為 true。否則,您將無法在下一個步驟中建立 SSH 通道。

  7. 選擇下一步下一步

  8. 選取確認,然後選擇建立堆疊

若要進一步了解 Linux 堡壘主機的架構,請參閱 AWS 雲端上的 Linux 堡壘主機: 架構

步驟二:建立 SSH 通道

下列步驟說明如何建立 linux 堡壘的 ssh 通道。SSH 通道會將請求從本機 IP 地址接收到 linux 堡壘,這就是為什麼在先前步驟true中將 linux 堡壘的 TCP 轉送設定為 的原因。

macOS/Linux
透過命令列建立通道
  1. 在 Amazon EC2 主控台上開啟執行個體頁面。

  2. 選擇執行個體。

  3. 公有 IPv4 DNS 中複製地址。例如 ec2-4-82-142-1.compute-1.amazonaws.com

  4. 在命令提示中,導覽至存放 SSH 金鑰的目錄。

  5. 執行下列命令,使用 ssh 連線至堡壘執行個體。在 中使用 SSH 金鑰名稱取代範例值mykeypair.pem

    ssh -i mykeypair.pem -N -D 8157 ec2-user@YOUR_PUBLIC_IPV4_DNS
Windows (PuTTY)
使用 PuTTY 建立通道
  1. 在 Amazon EC2 主控台上開啟執行個體頁面。

  2. 選擇執行個體。

  3. 公有 IPv4 DNS 中複製地址。例如 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 設定。

步驟三:將堡壘安全群組設定為傳入規則

允許從伺服器存取伺服器和定期網際網路,並將特殊維護安全群組連接到這些伺服器。下列步驟說明如何將堡壘安全群組設定為環境 VPC 安全群組的傳入流量來源。

  1. 在 Amazon MWAA 主控台上開啟環境頁面

  2. 選擇環境。

  3. 聯網窗格中,選擇 VPC 安全群組

  4. 選擇 Edit inbound Rules (編輯傳入規則)。

  5. 選擇新增規則

  6. 來源下拉式清單中選擇您的 VPC 安全群組 ID。

  7. 將其餘選項保留空白,或設定為其預設值。

  8. 選擇儲存規則

步驟四:複製 Apache Airflow URL

下列步驟說明如何開啟 Amazon MWAA 主控台,並將 URL 複製到 Apache Airflow UI。

  1. 在 Amazon MWAA 主控台上開啟環境頁面

  2. 選擇環境。

  3. Airflow UI 中複製 URL 以進行後續步驟。

步驟五:設定代理設定

如果您使用 SSH 通道搭配動態連接埠轉送,您必須使用 SOCKS 代理管理附加元件,以控制在瀏覽器中的代理設定。例如,您可以使用 Chromium --proxy-server的功能來啟動瀏覽器工作階段,或在 Mozilla FireFox 瀏覽器中使用 FoxyProxy 延伸模組。

選項一:使用本機連接埠轉送設定 SSH 通道

如果您不想使用 SOCKS 代理,您可以使用本機連接埠轉送來設定 SSH 通道。下列範例命令透過轉送本機連接埠 8157 上的流量來存取 Amazon EC2 ResourceManager Web 介面。

  1. 開啟新的命令提示視窗。

  2. 輸入下列命令以開啟 SSH 通道。

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

    -L 表示使用本機連接埠轉送,可讓您指定用於將資料轉送至節點本機 Web 伺服器上已識別遠端連接埠的本機連接埠。

  3. 在瀏覽器http://localhost:8157/中輸入 。

    注意

    您可能需要使用 https://localhost:8157/

選項二:透過命令列代理

大多數 Web 瀏覽器可讓您透過命令列或組態參數來設定代理。例如,使用 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 for Mozilla Firefox 的代理

下面的範例演示了 Mozilla Firefox 的 FoxyProxy Standard (7.5.1 版) 組態。FoxyProxy 提供一組代理管理工具。它可讓您將代理伺服器用於符合對應於 Apache Airflow UI 所用網域之模式的 URLs。

  1. 在 Firefox 中,開啟 FoxyProxy 標準擴充功能頁面。

  2. 選擇新增至 Firefox

  3. 選擇新增

  4. 選擇瀏覽器工具列中的 FoxyProxy 圖示,然後選擇選項

  5. 複製下列程式碼,並在本機儲存為 mwaa-proxy.json。使用 Apache Airflow URL 取代 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. 選擇確定

步驟六:開啟 Apache Airflow UI

下列步驟說明如何開啟 Apache Airflow UI。

  1. 在 Amazon MWAA 主控台上開啟環境頁面

  2. 選擇開啟氣流使用者介面

後續步驟?