クラスター起動時の Amazon VPC オプション
VPC 内で Amazon EMR クラスターを起動するときは、パブリックサブネット、プライベートサブネット、または共有サブネット内で起動できます。クラスターに選択するサブネットタイプに応じて、構成に多少の顕著な相違があります。
パブリックサブネット
パブリックサブネットの EMR クラスターでは、接続されているインターネットゲートウェイが必要です。これは、Amazon EMR クラスターは AWS サービスおよび Amazon EMR にアクセスする必要があるためです。Simple Storage Service (Amazon S3) などのサービスが、VPC エンドポイントを作成する機能を提供している場合、インターネットゲートウェイを通してパブリックエンドポイントにアクセスする代わりに、エンドポイントを使用してこれらのサービスにアクセスできます。また、Amazon EMR はネットワークアドレス変換 (NAT) デバイスを通じてパブリックサブネットのクラスターと通信することはできません。この目的にはインターネットゲートウェイが必要ですが、より複雑なシナリオでは、他のトラフィックに対して NAT インスタンスまたはゲートウェイを引き続き使用できます。
クラスター内のインスタンスはいずれも、VPC エンドポイントまたはインターネットゲートウェイを通じて Simple Storage Service (Amazon S3) に接続します。現在 VPC エンドポイントをサポートしていない他の AWS サービスは、インターネットゲートウェイのみを使用します。
インターネットゲートウェイへの接続を避けたい AWS リソースが他にもある場合は、VPC 内に作成したプライベートサブネットでそのコンポーネントを起動できます。
パブリックサブネットで実行中のクラスターは 2 つのセキュリティグループを使用します。1 つはプライマリノード用、もう 1 つはコアノードとタスクノード用です。詳細については、「Amazon EMR クラスターのセキュリティグループを使用してネットワークトラフィックを制御する」を参照してください。
次の図は、パブリックサブネットを使用して Amazon EMR クラスターが VPC でどのように実行されるかを示しています。クラスターは、Simple Storage Service (Amazon S3) バケットなどの他の AWS リソースにインターネットゲートウェイを使用して接続できます。
次の図は、VPC のクラスターが Oracle データベースなど、ご自身のネットワーク上のリソースにアクセスできるように VPC をセットアップする方法を示します。
プライベートサブネット
プライベートサブネットでは、アタッチされたインターネットゲートウェイがサブネットになくても AWS リソースを起動できます。プライベートサブネットでのクラスターの起動をサポートするのは、Amazon EMR リリースバージョン 4.2.0 以降のみです。
注記
プライベートサブネットに Amazon EMR クラスターを設定するときは、Amazon S3 の VPC エンドポイントも設定することをお勧めします。EMR クラスターが Amazon S3 の VPC エンドポイントのないプライベートサブネットに存在する場合、EMR クラスターと S3 間のトラフィックは VPC 内にとどまらないため、S3 トラフィックに関連する追加の NAT ゲートウェイ料金が発生します。
プライベートサブネットとパブリックサブネットは、次の点で異なります。
-
VPC エンドポイントを提供しない AWS サービスにアクセスするには、NAT インスタンスまたはインターネットゲートウェイを引き続き使用する必要があります。
-
少なくとも、Amazon EMR サービスログバケットと Simple Storage Service (Amazon S3) の Amazon Linux リポジトリへのルートを提供する必要があります。詳細については、「Amazon S3 にアクセスするプライベートサブネットのサンプルポリシー」を参照してください。
-
EMRFS 機能を使用する場合、Simple Storage Service (Amazon S3) VPC エンドポイントとプライベートサブネットから DynamoDB へのルートが必要です。
-
デバッグが機能するのは、プライベートサブネットからパブリック Amazon SQS エンドポイントへのルートを提供する場合のみです。
-
パブリックサブネットで NAT インスタンスまたはゲートウェイを使用したプライベートサブネット設定の作成がサポートされるのは、AWS Management Consoleを使用する場合のみです。Amazon EMR クラスターの NAT インスタンスと Simple Storage Service (Amazon S3) VPC エンドポイントを追加および設定する最も簡単な方法は、Amazon EMR コンソールの [VPC Subnets List] (VPC サブネットリスト) ページを使用することです。NAT ゲートウェイを作成するには、「Amazon VPC ユーザーガイド」の「NAT ゲートウェイ」を参照してください。
-
既存の Amazon EMR クラスターがあるサブネットを、パブリックからプライベートに、またはその逆に変更することはできません。プライベートサブネット内で Amazon EMR クラスターを見つけるため、クラスターはそのプライベートサブネットで起動する必要があります。
Amazon EMR はプライベートサブネットでクラスターの異なるデフォルトセキュリティグループ (ElasticMapReduce-Master-Private、ElasticMapReduce-Slave-Private、および ElasticMapReduce-ServiceAccess) を作成および使用します。詳細については、「Amazon EMR クラスターのセキュリティグループを使用してネットワークトラフィックを制御する」を参照してください。
クラスターの NACL の完全なリストについては、Amazon EMR コンソールの [クラスターの詳細] ページで [プライマリのセキュリティグループ] と [コアおよびタスクのセキュリティグループ] を選択します。
次の図は、プライベートサブネット内で Amazon EMR クラスターが設定される方法を示しています。サブネット外の唯一の通信は、Amazon EMR に対するものです。
次の図は、パブリックサブネットにある NAT インスタンスに接続されているプライベートサブネット内の Amazon EMR クラスターの設定例を示しています。
共有サブネット
VPC を共有すると、顧客は同じ AWS 組織内の他の AWS アカウントとサブネットを共有できるようになります。次の注意点に注意しながら、Amazon EMR クラスターをパブリック共有サブネットとプライベート共有サブネットの両方で起動できます。
Amazon EMR クラスターをサブネットで起動するには、サブネットの所有者とサブネットを共有している必要があります。ただし、共有サブネットは後で共有解除することができます。詳細については、「共有 VPC の使用」を参照してください。クラスターを共有サブネットで起動した後に、共有サブネットが共有解除された場合は、サブネットの共有解除時に、Amazon EMR クラスターの状態に基づいて、特定の動作が発生します。
-
クラスターが正常に起動する前にサブネットが共有解除された場合 - 参加者がクラスターを起動しようとしている最中に、所有者が Amazon VPC またはサブネットの共有を停止した場合は、クラスターの起動に失敗するか、リクエストされたすべてのインスタンスがプロビジョニングされないままに、クラスターが部分的に初期化されることがあります。
-
クラスターが正常に起動した後にサブネットが共有解除された場合 - 所有者が参加者とのサブネットまたは Amazon VPC の共有を停止した場合、参加者のクラスターは、新しいインスタンスの追加や、異常なインスタンスを交換するためにサイズ変更できなくなります。
Amazon EMR クラスターを起動すると、複数のセキュリティグループが作成されます。共有サブネットでは、サブネットの参加者がこれらのセキュリティグループを制御します。サブネットの所有者は、これらのセキュリティグループを表示できますが、これらのグループに対してアクションを実行することはできません。サブネットの所有者がセキュリティグループの削除または変更を希望する場合は、セキュリティグループを作成した参加者がそのアクションを実行する必要があります。
IAM で VPC のアクセス許可を制御する
デフォルトでは、すべての ユーザーはそのアカウントのすべてのサブネットを表示でき、どのサブネットでもクラスターを起動できます。
VPC 内でクラスターを起動するときは、Amazon EC2 Classic 内で起動したクラスターと同じように、AWS Identity and Access Management (IAM) を使用してクラスターへのアクセスを制御したり、ポリシーを使用してアクションを制限したりすることができます。IAM の詳細については、「IAM ユーザーガイド」を参照してください。
また、IAM を使用すると、サブネットを作成および管理できるユーザーを制御することもできます。例えば、サブネットを管理するための IAM ロールを 1 つ作成し、クラスターを起動することはできても Amazon VPC の設定を変更できないロールを 2 つ目として作成できます。Amazon EC2 および Amazon VPC でのポリシーとアクションの管理の詳細については、「Amazon EC2 ユーザーガイド」の「Amazon EC2 の IAM ポリシー」を参照してください。