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

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

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

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

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

をサポートするために、VPCs は VPC の 1 つ、2 つ、または 3 つのサブネットにエンドポイントを配置します。Amazon ESドメインに対して複数のアベイラビリティーゾーンを有効にする場合、各サブネットは同じリージョンの異なるアベイラビリティーゾーンに存在する必要があります。アベイラビリティーゾーンを 1 つしか使用しない場合、Amazon ES は 1 つのサブネットのみにエンドポイントを配置します。

次の図は、1 つのアベイラビリティーゾーンの VPC アーキテクチャを示しています。

次の図は、2 つのアベイラビリティーゾーンの VPC アーキテクチャを示しています。

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

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

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

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

注記

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

Limitations

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

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

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

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

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

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

  • 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、トランジットゲートウェイ、マネージド型ネットワーク、またはプロキシサーバーを使用します。使用できるさまざまな形式の詳細については、『https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenarios.html』の「Amazon VPC ユーザーガイドシナリオと例.」を参照してください 。開発に焦点を置いた例については、「」を参照してください。VPC ドメインのテスト.

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

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

追加のセキュリティ層には、きめ細かなアクセスコントロール、または IAM ユーザーやロールを指定するアクセスポリシーを使用することをお勧めします。このような場合、ドメインがリクエストを受け入れるには、セキュリティグループがそのリクエストを許可し、かつ有効な認証情報で署名する必要があります。

注記

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

VPC ドメインのテスト

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

  1. ドメインのアクセスポリシーで、[Allow open access to the domain (ドメインへのオープンアクセスを許可する).] を選択します。この設定は、テスト完了後にいつでも更新できます。

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

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

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

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

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

    たとえば、コンピュータが 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/ に移動します。セキュリティ例外の承認が必要な場合があります。

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

    ヒント

    証明書の不一致が原因で curl のエラーが発生した場合は、--insecure フラグを試してください。

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

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

  • VPC を作成する

    VPC を作成するには、Amazon VPC コンソール、AWS CLI、またはいずれかの AWS SDKs を使用できます。 詳細については、VPCs の「 の使用」を参照してください。Amazon VPC ユーザーガイドVPC が既にある場合、このステップは省略できます。

  • IP アドレスのリザーブ

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

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

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

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

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

  • アベイラビリティーゾーンの数。2 つまたは 3 つのアベイラビリティーゾーンを有効にした場合、1 つのアベイラビリティーゾーンに必要なサブネットあたりの IP アドレスの数は半分または 1/3 のみになります。

基本的な計算式は次のとおりです。各サブネットの IP アドレスリザーブ数はノード数の 3 倍であり、アベイラビリティーゾーンの数で割った数です。

  • ドメインに 10 個のデータノードがあり、アベイラビリティーゾーンが 2 つある場合、IP 数は、10 ÷ 2 x 3 = 15 となります。

  • ドメインに 10 個のデータノードがあり、アベイラビリティーゾーンが 1 つある場合、IP 数は、10 x 3 = 30 となります。

ドメインを作成する場合、Amazon ES は IP アドレスを予約し、一部をドメインに使用して、残りは blue/green デプロイ.用に予約します。ネットワークインターフェイスと関連する IP アドレスは、 コンソールの [ネットワークインターフェイスAmazon EC2] セクションに表示されます。[Description (説明)] 列は、ネットワークインターフェイスのどの Amazon ES ドメインが関連付けられているかを示しています。

ヒント

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

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

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

Amazon ES コンソールを使用して VPC 内にドメインを作成する場合、Amazon ES は自動的にこのロールを作成します。この自動作成を成功させるには、es:CreateElasticsearchServiceRole および iam:CreateServiceLinkedRole アクションへのアクセス許可が必要です。詳細については、https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions の「IAM ユーザーガイドサービスにリンクされたロールのアクセス権限.」を参照してください。

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

注記

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

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

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

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