Amazon Elasticsearch Service ドメインの作成と管理 - Amazon Elasticsearch Service

Amazon Elasticsearch Service ドメインの作成と管理

この章では、Amazon Elasticsearch Service (Amazon ES) ドメインを作成および管理する方法について説明します。Amazon ES ドメインは、Elasticsearch クラスターと同義です。ドメインは、指定した設定、インスタンスタイプ、インスタンス数、およびストレージリソースを含むクラスターです。

開始方法チュートリアルの簡単な手順とは異なり、この章ではすべてのオプションについて説明し、関連するリファレンス情報を提供します。Amazon ES コンソール、AWS Command Line Interface (AWS CLI)、または AWS SDK の手順を使用することで、各手順を完了できます。

Amazon ES ドメインの作成

このセクションでは、Amazon ES コンソールを使用するか、AWS CLI で create-elasticsearch-domain コマンドを使用して Amazon ES ドメインを作成する方法について説明します。

Amazon ES ドメイン (コンソール) の作成

次の手順に従って、コンソールを使用することで Amazon ES ドメインを作成します。

Amazon ES ドメイン (コンソール) を作成するには

  1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。

  2. [分析] で、[Elasticsearch Service] を選択します。

  3. [Create a new domain (新しいドメインの作成)] を選択します。

  4. [デプロイタイプの選択] で、ドメインの目的に最も一致するオプションを選択します。

    • [本番稼働用] ドメインでは、マルチ AZ と専用マスターノードが使用されます。可用性を高めるために使用します。

    • [開発およびテスト] ドメインでは、単一のアベイラビリティーゾーンが使用されます。

    • [カスタム] ドメインでは、すべての設定オプションから選択できます。

    重要

    デプロイタイプが異なると、後続のページのオプションが異なります。これらの手順には、すべてのオプション (カスタムデプロイタイプ) が含まれます。

  5. [Elasticsearch のバージョン] では、最新バージョンの選択をお勧めします。詳細については、「サポートされる Elasticsearch バージョン」を参照してください。

  6. [Next] を選択します。

  7. [Elasticsearch ドメイン名] に、ドメイン名を入力します。名前は次の基準を満たしている必要があります。

    • アカウントおよびリージョンに固有

    • 先頭が小文字

    • 3 ~ 28 文字

    • 小文字の a ~ z、0 ~ 9 の数字、ハイフン (-) のみ含まれる

  8. [アベイラビリティーゾーン] で、[1-AZ]、[2-AZ]、または [3-AZ] を選択します。詳細については、「マルチ AZ ドメインの設定」を参照してください。

  9. [インスタンスタイプ] で、データノードのインスタンスタイプを選択します。詳細については、「サポートされるインスタンスタイプ」を参照してください。

    注記

    すべてのアベイラビリティーゾーンですべてのインスタンスタイプがサポートされているわけではありません。[3-AZ] を選択した場合、R5 や I3 など、現行世代のインスタンスタイプの選択が推奨されます。

  10. [Number of nodes (ノードの数)] で、データノードの数を選択します。

    最大値については、「クラスターとインスタンスの制限」を参照してください。単一ノードのクラスターは、開発とテスト用に適切ですが、本稼働のワークロードには使用しないでください。ガイダンスについては、「Amazon ES ドメインのサイジング」および「マルチ AZ ドメインの設定」を参照してください。

  11. [Data nodes storage type (データノードストレージタイプ)] で、[Instance (インスタンス)] (デフォルト) または [EBS] を選択します。

    特に大きなドメインを作成する際のガイダンスについては、「ペタバイト規模」を参照してください。[EBS] を選択した場合、以下のオプションが表示されます。

    1. [EBS volume type (EBS ボリュームタイプ)] で、EBS ボリュームタイプを選択します。

      EBS ボリュームタイプに [Provisioned IOPS (SSD) (プロビジョンド IOPS (SSD))] を選択した場合、[Provisioned IOPS (プロビジョンド IOPS)] に必要なベースライン IOPS パフォーマンスを入力します。詳細については、Amazon EC2 のドキュメントの「Amazon EBS ボリューム」を参照してください。

    2. [EBS storage size per node (ノードごとの EBS ストレージサイズ)] に、各データノードにアタッチする EBS ボリュームのサイズを入力します。

      [EBS volume size (EBS ボリュームサイズ)] はノードあたりのサイズです。Amazon ES ドメインの合計クラスターサイズは、データノードの数を EBS ボリュームサイズで乗算して計算できます。EBS ボリュームの最小サイズと最大サイズは、指定された EBS ボリュームタイプとそれがアタッチされるインスタンスタイプの両方によって異なります。詳細については、「EBS ボリュームサイズの制限」を参照してください。

  12. (オプション) 専用マスターノードを有効または無効にします。専用マスターノードは、クラスターの安定性を高めます。また、インスタンス数が 10 を超えるドメインに必要です。本番稼働用ドメインには、3 つの専用マスターノードをお勧めします。

    注記

    専用マスターノードおよびデータノードの異なるインスタンスタイプを選択できます。たとえば、データノードの汎用またはストレージ最適化インスタンスを選択できますが、専用マスターノードのコンピューティング最適化インスタンスは選択できません。

  13. (オプション) UltraWarm ストレージを有効にするには、[Enable UltraWarm data nodes (UltraWarm データノードを有効にする)] を選択します。各インスタンスタイプには、アドレス可能なストレージの最大容量があります。この量に、アドレス可能なウォームストレージの合計のウォームデータノードの数を乗算します。

  14. (オプション) Elasticsearch 5.3 以降を実行しているドメインの場合、[Automated snapshot start hour (自動スナップショット開始時刻)] は実行されません。自動化されたスナップショットの詳細については、「Amazon Elasticsearch Service インデックススナップショットの使用」を参照してください。

  15. (オプション) [オプションの Elasticsearch クラスター設定] を選択します。これらのオプションの概要については、「高度なオプション」を参照してください。

  16. [Next] を選択します。

  17. [Network configuration (ネットワーク設定)] セクションで、[VPC access (VPC アクセス)] あるいは [Public access (パブリックアクセス)] のどちらかを選択します。[パブリックアクセス] を選択した場合は、次のステップに進みます。[VPC access (VPC アクセス)] を選択する場合、前提条件を満たしていることを確認してから、次の操作を行います。

    1. [VPC] では、使用する VPC の ID を選択します。

      注記

      VPC とドメインが同じ AWS リージョンに存在している必要があり、テナントが [Default (デフォルト)] に設定されている VPC を選択する必要があります。Amazon ES​ は専有テナントを使用する VPC をまだサポートしていません。

    2. [Subnet (サブネット)] では、1 個のサブネットを選択します。マルチ AZ を有効にした場合は、2 個または 3 個のサブネットを選択する必要があります。Amazon ES は VPC エンドポイントと Elastic Network Interfaces を複数のサブネットに配置します。

      注記

      1 個のサブネット (または複数のサブネット) のネットワークインターフェースにで十分な IP アドレスをリザーブする必要があります。詳細については、「VPC サブネットで IP アドレスをリザーブする」を参照してください。

    3. [Security groups (セキュリティグループ)] で、Amazon ES ドメインにアクセスするために必要な VPC セキュリティグループを選択します。詳細については、「Amazon Elasticsearch Service ドメインの VPC サポート」を参照してください。

    4. [IAM role (IAM ロール)] は、デフォルトロールのままにしておきます。Amazon ES では、この事前定義されたロール (サービスにリンクされたロールとも呼ばれる) を使用して VPC にアクセスし、VPC のサブネットに VPC エンドポイントとネットワークインターフェースを配置します。詳細については、「VPC アクセス用のサービスにリンクされたロール」を参照してください。

  18. [きめ細かなアクセスコントロール] セクションで、きめ細かなアクセスコントロールを有効または無効にします。

    • ユーザー管理に IAM を使用する場合は、[Set IAM role as master user (IAM ロールをマスターユーザーとして設定)] を選択し、IAM ロールの ARN を指定します。

    • 内部ユーザーデータベースを使用する場合は、[Create a master user (マスターユーザーの作成)] を選択し、ユーザー名とパスワードを指定します。

    どのオプションを選択しても、マスターユーザーはクラスター内のすべてのインデックスとすべての Elasticsearch API にアクセスできます。選択するオプションのガイダンスについては、「主要なコンセプト」を参照してください。

    きめ細かなアクセスコントロールを無効にしても、ドメインを VPC 内に配置するか、制限付きアクセスポリシーを適用するか、またはその両方を行うことで、ドメインへのアクセスをコントロールできます。きめ細かなアクセスコントロールを使用するには、ノード間の暗号化と保存時の暗号化を有効にする必要があります。

  19. (オプション) Amazon Cognito authentication for Kibana を使用する場合は、[Enable Amazon Cognito authentication (Amazon Cognito 認証の有効化)] を選択します。

    1. Kibana 認証に使用する Amazon Cognito ユーザープールと ID プールを選択します。これらのリソースの作成のガイダンスについては、「Kibana の Amazon Cognito 認証」を参照してください。

  20. [Domain access policy (ドメインアクセスポリシー)] で、目的の ARN または IP アドレスを追加するか、ドロップダウンリストから事前設定されたポリシーを選択します。詳細については、「Amazon Elasticsearch Service の Identity and Access Management」および「VPC ドメインのアクセスポリシーについて」を参照してください。

    注記

    ステップ 17 で [VPC access (VPC アクセス)] を選択した場合、IP ベースのポリシーは禁止されます。代わりに、どの IP アドレスがドメインにアクセスできるかを制御するセキュリティグループを使用できます。詳細については、「VPC ドメインのアクセスポリシーについて」を参照してください。

  21. (オプション) ドメインへのすべてのリクエストが HTTPS 経由で到着することを要求するには、[Require HTTPS for all traffic to the domain (ドメインへのすべてのトラフィックに HTTPS が必要)] チェックボックスをオンにします。

  22. (オプション) ノード間の暗号化を有効にするには、[ノード間の暗号化] チェックボックスをオンにします。詳細については、「Amazon Elasticsearch Service のノード間の暗号化」を参照してください。

  23. (オプション) 保管時のデータの暗号化を有効にするには、[保管時のデータの暗号化の有効化] チェックボックスをオンにします。

    ユーザーに代わって Amazon ES に KMS 暗号化キーを作成させる (あるいは、すでに作成されている場合) には、[(デフォルト) aws/es] を選択します。そうでない場合は、[KMS master key (KMS マスターキー)] メニューから独自の KMS 暗号化キーを選択します。詳細については、「Amazon Elasticsearch Service の保管時のデータの暗号化」を参照してください。

  24. [Next (次へ)] を選択します。

  25. [Review (レビュー)] ページで、ドメイン設定を確認し、[Confirm (確認)] を選択します。

Amazon ES ドメインの作成 (AWS CLI)

コンソールを使用して Amazon ES ドメインを作成する代わりに、AWS CLI を使用できます。構文については、「AWS CLI コマンドリファレンス」の「Amazon Elasticsearch Service」を参照してください。

コマンド例

この最初の例は、以下の Amazon ES ドメイン設定を示しています。

  • Elasticsearch バージョン 5.5 を使用して、mylogs という名前の Amazon ES ドメインを作成します。

  • m4.large.elasticsearch インスタンスタイプの 2 つのインスタンスをドメインに追加する

  • 各データノードのストレージに 100 GiB 磁気ディスクの EBS ボリュームを使用する

  • 単一の IP アドレス 192.0.2.0/32 からのみ匿名アクセスを許可する

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=2 --ebs-options EBSEnabled=true,VolumeType=standard,VolumeSize=100 --access-policies '{"Version": "2012-10-17", "Statement": [{"Action": "es:*", "Principal":"*","Effect": "Allow", "Condition": {"IpAddress":{"aws:SourceIp":["192.0.2.0/32"]}}}]}'

次の例は、以下の Amazon ES ドメイン設定を示しています。

  • Elasticsearch バージョン 5.5 を使用して、mylogs という名前の Amazon ES ドメインを作成します。

  • m4.large.elasticsearch インスタンスタイプの 6 つのインスタンスをドメインに追加する

  • 各データノードのストレージに 100 GiB 汎用 (SSD) EBS ボリュームを使用する

  • サービスへのアクセスを、ユーザーの AWS アカウント ID 555555555555 によって識別される単一のユーザーに制限する

  • 3 つのアベイラビリティーゾーンへのインスタンスの分散

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=6,ZoneAwarenessEnabled=true,ZoneAwarenessConfig={AvailabilityZoneCount=3} --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=100 --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::555555555555:root" }, "Action":"es:*", "Resource": "arn:aws:es:us-east-1:555555555555:domain/mylogs/*" } ] }'

次の例は、以下の Amazon ES ドメイン設定を示しています。

  • Elasticsearch バージョン 5.5 を使用して、mylogs という名前の Amazon ES ドメインを作成します。

  • m4.xlarge.elasticsearch インスタンスタイプの 10 個のインスタンスをドメインに追加する

  • 専用マスターノードとして機能する m4.large.elasticsearch インスタンスタイプの 3 つのインスタンスをドメインに追加する

  • ストレージに 100 GiB プロビジョンド IOPS EBS ボリュームを使用し、各データノードに 1000 IOPS のベースラインパフォーマンスを設定する

  • アクセスを単一のユーザーと単一のサブリソース _search API に制限する

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.xlarge.elasticsearch,InstanceCount=10,DedicatedMasterEnabled=true,DedicatedMasterType=m4.large.elasticsearch,DedicatedMasterCount=3 --ebs-options EBSEnabled=true,VolumeType=io1,VolumeSize=100,Iops=1000 --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::555555555555:root" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-1:555555555555:domain/mylogs/_search" } ] }'
注記

Amazon ES ドメインを作成する際に、同じ名前のドメインが既に存在しても、CLI からエラーは報告されません。その代わりに、既存ドメインの詳細が返されます。

Amazon ES (AWS SDK) ドメインの作成

AWS SDK では (Android および iOS SDK を除く)、CreateElasticsearchDomain も含めて、「Amazon ES の設定 API リファレンス」で定義されたすべてのアクションがサポートされています。サンプルコードについては、「Amazon Elasticsearch Service での AWS SDK の使用」を参照してください。AWS SDK のインストールと使用の詳細については、「AWS Software Development Kits」を参照してください。

アクセス ポリシーの設定

Amazon Elasticsearch Service には、Amazon ES ドメインへのアクセスを設定するいくつかの方法が用意されています。詳細については、「Amazon Elasticsearch Service の Identity and Access Management」および「Amazon Elasticsearch Service でのきめ細かなアクセスコントロール」を参照してください。

コンソールは、ドメインの特定のニーズに対応してカスタマイズできる事前定義のアクセスポリシーを提供します。ほかの Amazon ES ドメインからアクセスポリシーをインポートすることもできます。上記のアクセスポリシーが VPC アクセスを操作する方法についての詳細は、「VPC ドメインのアクセスポリシーについて」を参照してください。

アクセスポリシーを設定するには (コンソール)

  1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。

  2. [分析] で、[Elasticsearch Service] を選択します。

  3. ナビゲーションペインの [My domains (マイドメイン)] で、更新するドメインを選択します。

  4. [Actions (アクション)]、[Modify access policy (アクセスポリシーの変更)] の順に選択します。

  5. アクセスポリシーの JSON を編集するか、ドロップダウンリストを使用して事前設定済みのオプションを選択します。

  6. [Submit] を選択します。

高度なオプション

詳細オプションを使用して、次のように設定します。

rest.action.multi.allow_explicit_index

HTTP リクエストボディ中で、インデックスへの明示参照を許可するかどうかを指定します。このプロパティを false に設定すると、ユーザーがサブリソースのアクセスコントロールをバイパスできなくなります。デフォルトでは、値は true に設定されます。詳細については、「詳細オプションと API に関する考慮事項」を参照してください。

indices.fielddata.cache.size

フィールドデータに割り当てられる Java ヒープスペースの割合を指定します。デフォルトでは、この設定は unbounded です。

注記

多くのお客様が、ローテーションするインデックスのクエリを毎日実行しています。indices.fielddata.cache.size を使用してベンチマークテストを始めることをお勧めします。このとき、ほとんどのユースケースでは JVM ヒープを 40% に設定してください。ただし、非常に大きいインデックスがある場合、さらに大きいフィールドデータキャッシュが必要になることがあります。

indices.query.bool.max_clause_count

Lucene のブールクエリで許可される句の最大数を指定します。デフォルト値は 1,024 です。クエリに含まれる句の数が最大数を超えていると、TooManyClauses エラーが発生します。詳細については、Lucene のドキュメントを参照してください。