オプション 2、パート 1: ダイナミックポートフォワーディングを使用してプライマリノードへの SSH トンネルをセットアップする - Amazon EMR

オプション 2、パート 1: ダイナミックポートフォワーディングを使用してプライマリノードへの SSH トンネルをセットアップする

プライマリノードのローカルウェブサーバーに接続するために、コンピュータとプライマリノードの間に SSH トンネルを作成します。これはポートフォワーディングとも呼ばれます。ダイナミックポートフォワーディングを使用して SSH トンネルを作成する場合、指定した未使用のローカルポートにルーティングされたすべてのトラフィックが、プライマリノードのローカルウェブサーバーに転送されます。これにより、SOCKS プロキシが作成されます。これで、FoxyProxy や SwitchyOmega などのアドオンを使用して SOCKS プロキシの設定を管理するようにインターネットブラウザを設定できます。

プロキシ管理のアドオンを使用すると、テキストパターンに基づいて自動的に URL をフィルタリングし、プロキシの設定をプライマリノードのパブリック DNS 名の形式に合致するドメインに限定することができます。プライマリノードでホストされているウェブサイトとインターネットのウェブサイトの表示を切り替えると、ブラウザのアドオンで自動的にプロキシのオンとオフが切り替えられます。

作業を始める前に、プライマリノードのパブリック DNS 名とキーペアのプライベートキーファイルが必要です。プライマリパブリック DNS 名を特定する方法については、「古いコンソールを使用してプライマリノードのパブリック DNS 名を取得するには」を参照してください。キーペアへのアクセスに関する詳細は、「Amazon EC2 Linux インスタンス用ユーザーガイド」の「Amazon EC2 のキーペア」を参照してください。プライマリノード上で表示するサイトの詳細については、「Amazon EMR クラスターでホストされているウェブインターフェイスを表示する」を参照してください。

OpenSSH でダイナミックポートフォワーディングを使用してプライマリノードへの SSH トンネルをセットアップする

OpenSSH でダイナミックポートフォワーディングを使用して SSH トンネルをセットアップするには
  1. インバウンド SSH トラフィックを許可していることを確認します。手順については、「接続する前に: インバウンドトラフィックを承認する」を参照してください。

  2. ターミナルウィンドウを開きます。Mac OS X で、[Applications] > [Utilities] > [Terminal] を選択します。他の Linux ディストリビューションでは、ターミナルは通常、[Applications] > [Accessories] > [Terminal] にあります。

  3. ローカルコンピュータで SSH トンネルを開くには、次のコマンドを入力します。~/mykeypair.pem.pem ファイルの場所とファイル名に、8157 を未使用のローカルポート番号に、c2-###-##-##-###.compute-1.amazonaws.com をクラスターのプライマリパブリック DNS 名に置き換えます。

    ssh -i ~/mykeypair.pem -N -D 8157 hadoop@ec2-###-##-##-###.compute-1.amazonaws.com

    このコマンドを発行すると、ターミナルは開いたままになり、応答を返しません。

    注記

    -D はダイナミックポートフォワーディングを使用することを示し、プライマリノードのローカルウェブサーバーのすべてのリモートポートにデータを転送するために使用するローカルポートを指定できます。ダイナミックポートフォワーディングでは、コマンドで指定されたポートでローカル SOCKS プロキシのリスニングが実行されます。

  4. トンネルがアクティブになった後、ブラウザの SOCKS プロキシを設定します。詳細については、「オプション 2、パート 2: プライマリノードでホストされるウェブサイトを表示するようにプロキシを設定する」を参照してください。

  5. プライマリノードのウェブインターフェイスに対する操作が終了したら、ターミナルウィンドウを閉じます。

AWS CLI でダイナミックポートフォワーディングを使用して SSH トンネルをセットアップする

Windows でも、Linux、Unix、および Mac OS X でも、AWS CLI を使用してプライマリノードへの SSH 接続を作成できます。Linux、Unix、または Mac OS X で AWS CLI を使用している場合は、「キーペアのプライベートキーのファイルアクセス許可を設定するには」に示されているように .pem ファイルに対するアクセス許可を設定する必要があります。Windows で AWS CLI を使用している場合は、path 環境変数で PuTTY を指定している必要があります。指定していない場合、OpenSSH or PuTTY not available などのエラーが表示されることがあります。

AWS CLI でダイナミックポートフォワーディングを使用して SSH トンネルをセットアップするには
  1. インバウンド SSH トラフィックを許可していることを確認します。手順については、「接続する前に: インバウンドトラフィックを承認する」を参照してください。

  2. AWS CLI を使用してプライマリノードに接続する」に示されているように、プライマリノードへの SSH 接続を作成します。

  3. クラスター識別子を取得するには、次のように入力します。

    aws emr list-clusters

    出力には、クラスター ID を含むクラスターのリストが表示されます。接続しているクラスターのクラスター ID を書き留めます。

    "Status": { "Timeline": { "ReadyDateTime": 1408040782.374, "CreationDateTime": 1408040501.213 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting after step completed" } }, "NormalizedInstanceHours": 4, "Id": "j-2AL4XXXXXX5T9", "Name": "AWS CLI cluster"
  4. 次のコマンドを入力して、ダイナミックポートフォワーディングを使用してプライマリノードへの SSH トンネルを開きます。次の例で、j-2AL4XXXXXX5T9 をクラスター ID に、~/mykeypair.key.pem ファイル (Linux、Unix、および Mac OS X の場合) または .ppk ファイル (Windows の場合) の場所とファイル名に置き換えてください。

    aws emr socks --cluster-id j-2AL4XXXXXX5T9 --key-pair-file ~/mykeypair.key
    注記

    socks コマンドは、自動的にポート 8157 でダイナミックポートフォワーディングを設定します。現在、この設定は変更できません。

  5. トンネルがアクティブになった後、ブラウザの SOCKS プロキシを設定します。詳細については、「オプション 2、パート 2: プライマリノードでホストされるウェブサイトを表示するようにプロキシを設定する」を参照してください。

  6. プライマリノードのウェブインターフェイスに対する操作が終了したら、AWS CLI ウィンドウを閉じます。

    AWS CLI での Amazon EMR コマンドの使用の詳細については、「https://docs.aws.amazon.com/cli/latest/reference/emr」を参照してください。

PuTTY を使用してプライマリノードへの SSH トンネルをセットアップする

Windows ユーザーは、PuTTY などの SSH クライアントを使用して、プライマリノードへの SSH トンネルを作成できます。Amazon EMR プライマリノードに接続する前に、PuTTY と PuTTYgen をダウンロードしてインストールしてください。これらのツールは、PuTTY のダウンロードページからダウンロードできます。

PuTTY は、Amazon EC2 によって生成されるキーペアのプライベートキーファイルの形式 (.pem) をネイティブでサポートしていません。PuTTYgen を使用して、キーファイルを必要な PuTTY 形式 (.ppk) に変換します。PuTTY を使用してプライマリノードへの接続を試みる前に、キーをこの形式 (.ppk) に変換する必要があります。

キーの変換について詳しくは、「Amazon EC2 Linux インスタンス用ユーザーガイド」の「PuTTYgen を使用してプライベートキーを変換する」を参照してください。

PuTTY でダイナミックポートフォワーディングを使用して SSH トンネルをセットアップするには
  1. インバウンド SSH トラフィックを許可していることを確認します。手順については、「接続する前に: インバウンドトラフィックを承認する」を参照してください。

  2. putty.exe をダブルクリックして PuTTY を起動します。Windows のプログラムの一覧から PuTTY を起動することもできます。

    注記

    既にプライマリノードとのアクティブな SSH セッションがある場合は、PuTTY のタイトルバーを右クリックし、[Change Settings] を選択することでトンネルを追加できます。

  3. 必要に応じて、[Category] リストで、[Session] を選択します。

  4. [Host Name (ホスト名)] フィールドに「hadoop@MasterPublicDNS」と入力します。たとえば、hadoop@ec2-###-##-##-###.compute-1.amazonaws.com です。

  5. [Category] リストで、[Connection]、[SSH] の順に展開し、[Auth] を選択します。

  6. [Private key file for authentication] では、[Browse] をクリックし、以前に生成した .ppk ファイルを選択します。

    注記

    PuTTY は、Amazon EC2 によって生成されるキーペアのプライベートキーファイルの形式 (.pem) をネイティブでサポートしていません。PuTTYgen を使用して、キーファイルを必要な PuTTY 形式 (.ppk) に変換します。PuTTY を使用してプライマリノードへの接続を試みる前に、キーをこの形式 (.ppk) に変換する必要があります。

  7. [Category] リストで、[Connection]、[SSH] の順に展開し、[Tunnels] を選択します。

  8. [Source port] フィールドに 8157 (未使用のローカルポート) を入力し、[Add] を選択します。

  9. [Destination] フィールドは空白のままにしておきます。

  10. [Dynamic] オプションと [Auto] オプションを選択します。

  11. [開く] をクリックします。

  12. [Yes] を選択して、PuTTY セキュリティ警告を閉じます。

    重要

    プライマリノードにログインするときに、ユーザー名の入力を求められた場合は、「hadoop」と入力します。

  13. トンネルがアクティブになった後、ブラウザの SOCKS プロキシを設定します。詳細については、「オプション 2、パート 2: プライマリノードでホストされるウェブサイトを表示するようにプロキシを設定する」を参照してください。

  14. プライマリノードのウェブインターフェイスに対する操作が終了したら、PuTTY ウィンドウを閉じます。