チュートリアル: Linux 踏み台ホストを使用したプライベートネットワークアクセスの設定 - Amazon Managed Workflows for Apache Airflow

チュートリアル: Linux 踏み台ホストを使用したプライベートネットワークアクセスの設定

このチュートリアルでは、Amazon Managed Workflows for Apache Airflow 環境用に、コンピュータから Apache Airflow ウェブサーバーへの SSH トンネルを作成する手順を説明します。Amazon MWAA 環境が既に作成されていることを前提としています。セットアップが完了すると、Linux 踏み台ホストはジャンプサーバーとして機能し、コンピュータから VPC 内のリソースに安全に接続できるようになります。次に、SOCKS プロキシ管理アドオンを使用してブラウザのプロキシ設定を制御し、Apache Airflow UI にアクセスします。

プライベートネットワーク

このチュートリアルでは、Apache Airflow ウェブサーバーの プライベートネットワーク アクセスモードを選択していることを前提としています。

この画像は、プライベートウェブサーバーを備えた Amazon MWAA 環境のアーキテクチャを示しています。

プライベートネットワークアクセスモードは、Apache Airflow UI へのアクセスを、お使いの環境の IAM ポリシー へのアクセスが許可されている Amazon VPC 内 のユーザーに制限します。

プライベートなウェブサーバーアクセスを持つ環境を作成する場合、すべての依存関係を Python Wheel アーカイブ (.whl) にパッケージ化し、その後、requirements.txt.whl を参照する必要があります。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 ネットワークを作成する で定義されているように 2 つのプライベートサブネットを備えている必要があります。

  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 UI にアクセスします。

ステップ 1:踏み台インスタンスを作成する

以下のセクションでは、CloudFormation コンソール上で 既存の VPC 用の CloudFormation テンプレートを使用して Linux 踏み台インスタンスを作成する手順を説明します。

Linux 踏み台ホストを作成するには
  1. CloudFormation コンソールで クイックスタートをデプロイ ページを開きます。

  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 ネットワークを作成する ページの 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 要塞ホスト: アーキテクチャ を参照してください。

ステップ 2: ssh トンネルを作成する

Linux の踏み台への ssh トンネルを作成する方法については、以下のステップで示します。SSH トンネルは、ローカル IP アドレスから Linux 踏み台へのリクエストを受信するため、Linux 踏み台の TCP フォワーディングは前のステップで true に設定されました。

macOS/Linux
コマンドラインを使用してトンネルを作成するには
  1. Amazon EC2 のコンソールで、インスタンス ページを開きます。

  2. インスタンスを選択してください。

  3. Public IPv4 DNS のアドレスをコピーします。例えば、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)
PuTTY を使用してトンネルを作成するには
  1. Amazon EC2 のコンソールで、インスタンスページを開きます。

  2. インスタンスを選択してください。

  3. Public 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-TroublesshsSH ツールを使用し、[この自動化を実行 (コンソール)] を選択して 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 拡張機能を使用したりできます。

オプション 1: ローカルポート転送を使用して SSH トンネルをセットアップします。

SOCKS プロキシを使いたくない場合は、ローカルポート転送を使って SSH トンネルをセットアップすることができます。以下のコマンド例は、ローカルポート 8157 でトラフィックを転送して Amazon EC2 ResourceManager ウェブインターフェイスにアクセスします。

  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 はローカルポート転送の使用を意味し、ノードのローカルウェブサーバーの特定リモートポートへのデータ転送に使用するローカルポートを指定できます。

  3. ブラウザに http://localhost:8157/ と入力します。

    注記

    https://localhost:8157/ を使用する必要がある場合があります。

オプション 2: コマンドラインを使用したプロキシ

ほとんどのウェブブラウザでは、コマンドラインまたは設定パラメータを使用してプロキシを設定できます。たとえば、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.

オプション 3: Mozilla Firefox 用 FoxyProxy を使用するプロキシ

Mozilla Firefox の FoxyProxy Standard (バージョン 7.5.1) の設定を次の例に示します。FoxyProxy は、プロキシ管理ツールのセットを提供します。これにより、Apache Airflow UI で使用されるドメインに対応するパターンと一致する URL についてプロキシサーバーを使用できます。

  1. FireFox では、FoxyProxy スタンダード エクステンションページを開きます。

  2. Firefox に追加 を選択します。

  3. 追加 を選択します。

  4. ブラウザのツールバーで FoxyProxy アイコンを選択し、オプション を選択します。

  5. 次のコードをコピーし、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" }
  6. FoxyProxy 6.0+ から設定をインポート ペインで、設定をインポート を選択し、mwaa-proxy.json ファイルを選択します。

  7. OK を選択してください。

ステップ 6: Apache Airflow UI を開きます。

Apache Airflow UI を開く方法については、以下のステップで示します。

  1. Amazon MWAA コンソールで、環境ページ を開きます。

  2. Airflow UI を開く を選択します。

次のステップ