メニュー
Amazon Elasticsearch Service
開発者ガイド (API バージョン 2015-01-01)

Amazon Elasticsearch Service ドメインの VPC サポート

Virtual Private Cloud (VPC) は、AWS アカウント専用の仮想ネットワークです。VPC は、AWS クラウドの他の仮想ネットワークから論理的に切り離されています。AWS リソース (Amazon ES ドメインなど) を VPC 内で起動できます。

Amazon ES ドメインを VPC に配置すると、インターネットゲートウェイ、NAT デバイスや VPN 接続なしで、Amazon ES と他のサービス間に VPC 内で安全な通信ができるようになります。すべてのトラフィックは AWS クラウド内で安全に保持されます。論理的な隔離により、VPC 内に存在するドメインには、パブリックエンドポイントを使用するドメインに比較して、より拡張されたセキュリティレイヤーがあります。

VPC をサポートするにあたり、Amazon ES は VPC の 1 つあるいは 2 つのサブネットをエンドポイントに配置します。サブネットは、VPC の IP アドレスの範囲です。ドメインでゾーン対応を有効化すると、Amazon ES は 2 つのサブネットにエンドポイントを配置します。サブネットは、同じリージョン内の異なるアベイラビリティーゾーンに存在している必要があります。ゾーン対応を有効化しない場合、Amazon ES は 1 つのサブネットのみにエンドポイントを配置します。

次の図は、ゾーン対応が有効化されていない VPC アーキテクチャを示しています。

次の図は、ゾーン対応が有効化されている VPC アーキテクチャを示しています。

また、Amazon ES は各データノード用に VPC 内に elastic network interface (ENI) を配置します。Amazon ES は、各 ENI にサブネットの IPv4 アドレス範囲内のプライベート IP アドレスを割り当てます。また、このサービスは、IP アドレスにパブリック DNS ホスト名 (これは、ドメインエンドポイントです) も割り当てます。データノード用に適確な IP アドレスでエンドポイント (DNS ホスト名) を解決するために、パブリック DNS サービスを使用する必要があります。

  • VPC が Amazon が提供する DNS サーバーを enableDnsSupportoption totrue (デフォルト値) を設定して使用する場合、Amazon ES エンドポイントの解決は成功します。

  • VPC がプライベート DNS サーバーを使用し、このサーバーが DNS ホスト名を解決するためにパブリック権限の DNS サーバーに到達できる場合にも、Amazon ES エンドポイントの解決は成功します。

IP アドレスは変更する可能性があるため、ドメインのエンドポイントを定期的に解決して常に正しいデータノードにアクセスできるようにすることが重要です。DNS 解決間隔を 1 分間に設定することが推奨されます。クライアントを使用している場合には、クライアント側の DNS キャッシュもクリアしていることも確認する必要があります。

注記

Amazon ES は VPC での IPv6 アドレスをサポートしていません。IPv6 が有効化されている VPC を使用することはできますが、ドメインは IPv4 アドレスを使用します。

制約事項

現時点では、VPC 内の Amazon ES ドメイン運用には次の制限があります。

  • VPC 内でドメインを起動すること、あるいはパブリックエンドポイントを使用することができますが、両方を実行することはできません。ドメイン作成時にどちらかを選択する必要があります。

  • VPC 内に新規ドメインを起動する場合、後でパブリックエンドポイントの使用に切り替えることはできません。その逆も同じ結果となります。パブリックエンドポイントでドメインを作成する場合、後で VPC に配置することはできません。代わりに、新規のドメインを作成して、データを移行する必要があります。

  • 専有テナントを使用している VPC 内でドメインを起動することはできません。テナントを [Default] に設定した VPC を使用する必要があります。

  • VPC 内にドメインを配置した後で、別の VPC にそのドメインを移動することはできません。ただし、サブネットおよびセキュリティグループの設定を変更することはできます。

  • パブリックドメインと比較すると、Amazon ES コンソールに表示される VPC ドメインの情報は少なくなります。具体的には、[クラスターの状態] タブにはシャード情報が含まれておらず、[インデックス] タブは存在しません。

  • 現在のところ、Amazon ES は VPC 内に存在するドメインに Amazon Kinesis Data Firehose の統合をサポートしていません。Amazon ES でこのサービスを使用するには、パブリックアクセスでドメインを使用する必要があります。

  • VPC 内に存在するドメイン用に Kibana のデフォルトインストールにアクセスするには、VPC へのアクセスを保持している必要があります。このプロセスはネットワーク構成によって異なりますが、VPN への接続、ネットワークの管理あるいはプロキシサーバーの使用が必要となる場合がほとんどです。詳細については、VPC ドメインのアクセスポリシーについて、『Amazon VPC ユーザーガイド』および Kibana へのアクセスのコントロール を参照してください。

VPC ドメインのアクセスポリシーについて

VPC 内に Amazon ES ドメインを配置すると、内在する強力なセキュリティ層を提供します。パブリックアクセスのドメインを作成する場合、エンドポイントは次の形式になります。

https://search-domain-name-identifier.region.es.amazonaws.com

「パブリック」ラベルが示すように、このエンドポイントはすべてのインターネット接続デバイスからアクセスできますが、このアクセスを制御でき、制御する必要があります。ウェブブラウザでエンドポイントにアクセスするときに Not Authorized メッセージを受信することがありますが、リクエストはドメインに届きます。

VPC アクセスを使用してドメインを作成する場合、このエンドポイントはパブリックエンドポイントに類似しています。

https://vpc-domain-name-identifier.region.es.amazonaws.com

ウェブブラウザでエンドポイントにアクセスしようとすると、リクエストがタイムアウトする場合があります。基本的な GET リクエストを実行するときでも、コンピューターが VPC に接続していることが必要です。多くの場合、この接続では、VPN、マネージド型のネットワーク、またはプロキシサーバーを使用します。使用できるさまざまな形式の詳細については、『Amazon VPC ユーザーガイド』の「シナリオと例」を参照してください 。開発に焦点を置いた例については、「VPC ドメインのテスト」を参照してください。

この接続要件に加えて、VPC はセキュリティグループを使用したドメインへのアクセス管理を可能にします。多くのユースケースでは、このセキュリティ機能の組み合わせで十分となり、ドメインにオープンなアクセスポリシーを安心して適用できます。

オープンなアクセスポリシーで操作することは、インターネット上の誰でも Amazon ES ドメインにアクセスできることを意味するものではありません。むしろこれは、リクエストが Amazon ES ドメインに到達し、関連付けられたセキュリティーグループがそれを許可することは、ドメインが追加のセキュリティチェックなしでこのリクエストを受け入れることを意味します。

追加のセキュリティ層としては、IAM ユーザーまたはロールを指定するアクセスポリシーの使用が推奨されます。このポリシーを適用してドメインがリクエストを受信するには、セキュリティグループがそのリクエストを許可し、そしてこのリクエストが有効な認証情報で署名されていることが必要です。

注記

セキュリティグループには IP ベースのアクセス権限ポリシーですでに強化されているため、VPC 内に存在する Amazon ES ドメインに IP ベースのアクセス権限ポリシーを適用することはできません。パブリックエンドポイントを使用する場合、IP ベースのポリシーを引き続き利用できます。

VPC ドメインのテスト

VPC のセキュリティを強化することで、ドメインへの接続や、基本的なテスト実行を行い、実際の状況を確認することができます。Amazon ES VPC ドメインがすでにあり、VPC サーバーを作成しない場合は、次のプロセスをお試しください。

  1. ドメインのアクセスポリシーについては、[Do not require signing request with IAM credential (IAM 認証情報を使用した署名リクエストを要求しない)] を選択します。この設定は、テスト完了後にいつでも更新できます。

  2. Amazon ES ドメインと同じ VPC、サブネット、およびセキュリティグループに Amazon Linux Amazon EC2 インスタンスを作成します。

    このインスタンスはテストを目的としており、必要な作業はわずかであるため、安価なインスタンスタイプ (例: t2.micro) を選択します。インスタンスにパブリック IP アドレスを割り当てたら、新しいキーペアを作成するか、既存のキーペアを選択します。新しいキーを作成する場合は、~/.ssh ディレクトリにダウンロードします。

    インスタンス作成の詳細については、「Amazon EC2 Linux インスタンスの開始方法」を参照してください 。

  3. インターネットゲートウェイを VPC に追加します。

  4. VPC のルートテーブルで、新しいルートを追加します。[Destination (送信先)] で、コンピュータのパブリック IP アドレスを含む CIDR ブロックを指定します。[Target (ターゲット)] で、先ほど作成したインターネットゲートウェイを指定します。

    たとえば、コンピュータが 1 つのみの場合は 123.123.123.123/32、複数の場合には 123.123.123.0/24 を指定します。

  5. セキュリティグループで、2 つのインバウンドルールを指定します。

    タイプ プロトコル ポート範囲 送信元
    SSH (22) TCP (6) 22 your-cidr-block
    HTTPS (443) TCP (6) 443 your-security-group-id

    最初のルールでは、EC2 インスタンスに SSH 接続できます。2 番目のルールでは、EC2 インスタンスから Amazon ES ドメインに HTTPS 経由で通信できるようになります。

  6. ターミナルから、次のコマンドを実行します。

    ssh -i ~/.ssh/your-key.pem ec2-user@your-ec2-instance-public-ip -N -L 9200:vpc-your-amazon-es-domain.region.es.amazonaws.com:443

    このコマンドでは、https://localhost:9200 へのリクエストを EC2 インスタンスから Amazon ES ドメインに転送する SSH トンネルが作成されます。デフォルトでは、Elasticsearch はポート 9200 のトラフィックをリッスンします。このポートを指定すると、Elasticsearch のローカルインストールがシミュレートされますが、任意のポートを使用します。

    このコマンドではフィードバックは返らず、無限に実行されます。停止するには、Ctrl + C を押します。

  7. ウェブブラウザで https://localhost:9200/_plugin/kibana/ に移動します。セキュリティ例外の承認が必要な場合があります。

    curlPostman、またはお気に入りのプログラミング言語を使用して、https://localhost:9200 にリクエストを送信することもできます。

開始する前に: VPC アクセスの前提条件

VPC と新規の Amazon ES ドメイン間の接続を有効にするためには、次を実行する必要があります。

  • VPC を作成する

    VPC を作成するには、Amazon VPC コンソール、AWS CLI、またはいずれかの AWS SDK を使用できます。VPC 内に 1 個のサブネット、あるいはゾーン対応が有効な場合には 2 個のサブネットを作成する必要があります。詳細については、「VPC を作成する」を参照してください。VPC が既にある場合、このステップは省略できます。

  • IP アドレスのリザーブ

    Amazon ES は、ネットワークインターフェースを VPC のサブネットに配置することで、VPC をドメインに接続できるようにします。各ネットワークインターフェースは 1 つの IP アドレスに関連付けられます。ネットワークインターフェースのためにサブネットで十分な数の IP アドレスをリザーブする必要があります。詳細については、「VPC サブネットで IP アドレスをリザーブする」を参照してください。

VPC を作成する

VPC を作成するには、Amazon VPC コンソール、AWS CLI、またはいずれかの AWS SDK を使用できます。VPC に 1 個のサブネット、あるいはゾーン対応が有効な場合には 2 個のサブネットがある必要があります。この 2 個のサブネットは、同じリージョン内の異なるアベイラビリティーゾーンに存在している必要があります。

以下の手順は、Amazon VPC コンソールを使用してバブリックサブネットおよびサブネットのリザーブ IP アドレスで VPC を作成し、Amazon ES ドメインへのアクセスをコントロールするためのセキュリティグループを作成する方法を示しています。他の VPC 設定の詳細については、シナリオと例を『Amazon VPC ユーザーガイド』で参照してください 。

VPC を作成するには (コンソール)

  1. AWS マネジメントコンソールにサインインし、Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[VPC Dashboard] を選択します。

  3. [Start VPC Wizard] を選択します。

  4. [VPC 設定の選択] ページで [1 つのパブリックサブネットを持つ VPC] を選択します。

  5. [1 つのパブリックサブネットを持つ VPC] ページで、デフォルトのオプションを変更せずに、[VPC の作成] を選択します。

  6. 表示された確認メッセージで、[Close] を選択します。

  7. Amazon ES ドメインで ゾーン対応 を有効にする場合は、同じリージョンの異なるアベイラビリティゾーンに 2 つ目のサブネットを作成する必要があります。ゾーン対応を有効にする予定がない場合は、ステップ 8 にスキップします。

    1. ナビゲーションペインで、[サブネット] を選択します。

    2. [Create Subnet] を選択します。

    3. [サブネットの作成] ダイアログボックスではオプションで後にサブネットを識別するのに役立つ名前タグを作成します。

    4. [VPC] で、今作成した VPC を選択します。

    5. [アベイラビリティゾーン] で、最初のサブネットとは別のアベイラビリティーゾーンを選択します。両方のサブネットのアベイラビリティーゾーンは同じリージョンに存在している必要があります。

    6. [IPv4 CIDR ブロック] では、メンテナンス作業中に使用するために十分な IP アドレスを Amazon ES に提供する大きさの CIDR ブロックを設定します。詳細については、「VPC サブネットで IP アドレスをリザーブする」を参照してください。

      注記

      VPC アクセスを使用する Amazon ES ドメインは IPv6 アドレスをサポートしていません。IPv6 が有効化されている VPC を使用することはできますが、ENI には IPv4 アドレスがあります。

    7. [はい、作成する] を選択します。

  8. ナビゲーションペインで、[Subnets] を選択します。

  9. サブネットのリストで、1 個のサブネット (ステップ 7 で 2 つ目のサブネットを作成した場合には複数のサブネット) を検索します。[利用可能な IPv4] 列で、IPv4 アドレスの数が十分であることを確認します。

  10. サブネット ID とアベイラビリティーゾーンをメモしておきます。この情報は、後で Amazon ES ドメインを起動し、VPC に Amazon EC2 インスタンスを追加するときに必要です。

  11. Amazon VPC セキュリティグループを作成します。このセキュリティグループを使用して Amazon ES ドメインへのアクセスを制御します。

    1. ナビゲーションペインで、[セキュリティグループ] を選択します。

    2. [セキュリティグループの作成] を選択します。

    3. [セキュリティグループの作成] ダイアログボックスで、新しいネームタグ、グループ名と説明を入力します。[VPC] で使用する VPC の ID を選択します。

    4. [はい、作成する] を選択します。

  12. セキュリティグループのネットワーク Ingress ルールを定義します。このルールは Amazon ES ドメインに接続することを許可します。

    1. ナビゲーションペインで [セキュリティグループ] を選択し、今作成したセキュリティグループを選びます。

    2. ページ下部で、[インバウンドルール] タブを選択します。

    3. [編集] を選択して HTTPS (443) を選択します。

    4. [Save] を選択します。

これで、Amazon VPC で Amazon ES ドメインを起動できる状態になります。

VPC サブネットで IP アドレスをリザーブする

Amazon ES は、ネットワークインターフェースを VPC の 1 個のサブネット (ゾーン対応を有効した場合には VPC の 2 個のサブネット) に配置することでドメインを VPC に接続します。各ネットワークインターフェースは 1 つの IP アドレスに関連付けられます。Amazon ES ドメインを作成する前に、ネットワークインターフェースを対応するために十分な数の IP アドレスを VPC で有効にしておく必要があります。

Amazon ES に必要な IP アドレスの数は次に依存します。

  • ドメインのデータノードの数。(マスターノードはこの数に含まれません。)

  • ゾーン対応有効化の有無。ゾーン対応を有効にする場合、ゾーン対応が有効化されていない場合に必要な数に比べて、サブネットごとに半分の数の IP アドレスが必要となります。

基本的な計算式は次のとおりです。各サブネットの IP アドレスリザーブ数はノード数の 3 倍であり、ゾーン対応が有効化されている場合には 2 で割った数です。

  • ドメインに 10 個のデータノードがあり、ゾーン対応が有効化されている場合、IP 数は、10 ÷ 2 x 3 = 15 となります。

  • ドメインに 10 個のデータノードがあり、ゾーン対応が無効化されている場合、IP 数は、10 x 3 = 30 となります。

ドメインを作成すると、Amazon ES は IP アドレスをリザーブします。https://console.aws.amazon.com/ec2/ の Amazon EC2 コンソール の [ネットワークインターフェース] セクションからネットワークインターフェースと関連する IP アドレスを表示できます。[説明] 列は、ネットワークインターフェースのどの Amazon ES ドメインが関連付けられているかを示しています。

ヒント

Amazon ES リザーブド IP アドレス用の専用サブネットを作成することが推奨されます。専用サブネットを使用することで、他のアプリケーションやサービスとの重複を回避でき、将来的にクラスターをスケールする必要が生じた場合に追加の IP アドレスをリザーブできることを確保します。詳細については、「VPC でサブネットを作成する」を参照してください。

VPC アクセス用のサービスにリンクされたロール

サービスにリンクされたロールは、サービスに権限を委任する一意のタイプの IAM ロールであり、ユーザーに代わってリソースを作成して管理できます。Amazon ES には、VPC にアクセスし、ドメインのエンドポイントを作成し、VPC のサブネットにネットワークインターフェースを配置するために、サービスにリンクされたロールが必要です。

Amazon ES コンソールを使用して VPC 内にドメインを作成する場合、Amazon ES は自動的にこのロールを作成します。この自動作成を成功させるには、iam:CreateServiceLinkedRole アクションへのアクセス許可が必要です。詳細については、IAM ユーザーガイド の「サービスにリンクされたロールのアクセス権限」を参照してください。

Amazon ES がロールを作成すると、IAM コンソールを使用してこのロールを表示することができます (AWSServiceRoleForAmazonElasticsearchService)。

注記

パブリックエンドポイントを使用するドメインを作成した場合、Amazon ES はサービスにリンクされたロールを必要とせず、このロールを作成しません。

このロールのアクセス権限およびその削除方法の詳細については、「Amazon ES のサービスにリンクされたロールの使用」を参照してください。

パブリックアクセスから VPC アクセスに移行する

ドメインを作成するときは、このドメインがパブリックエンドポイントにあるか、あるいは VPC 内に存在するかを指定します。一度作成すると、選択を別のものに切り替えることはできません。代わりに、新規のドメインを作成して、手動で再度インデックスするか、またはデータを移行する必要があります。スナップショットは、データの移行に便利な手段です。スナップショットの作成と復元の詳細については、「Amazon Elasticsearch Service インデックススナップショットの使用」を参照してください。

Amazon VPC ドキュメント

Amazon VPC に関するドキュメントには、Amazon VPC の作成および使用方法について説明する独自のドキュメントがあります。以下の表に Amazon VPC ガイドへのリンクを示します。

説明 ドキュメント
Amazon VPC の使用を開始するには Amazon VPC 入門ガイド
AWS マネジメントコンソールで Amazon VPC を使用する方法 Amazon VPC ユーザーガイド
すべての Amazon VPC コマンドの詳細説明 Amazon EC2 コマンドラインリファレンス (Amazon VPC コマンドは、Amazon EC2 リファレンスの一部です)。
Amazon VPC API アクション、データタイプ、およびエラーの詳細説明 Amazon EC2 API Reference (Amazon VPC API アクションは、Amazon EC2 リファレンスの一部です)。
オプションとして IPsec VPN 接続のゲートウェイを設定するネットワーク管理者向け情報 Amazon VPC ネットワーク管理者ガイド

Amazon Virtual Private Cloud の詳細については、「Amazon Virtual Private Cloud」を参照してください。