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 を使用して Amazon ES ドメインを作成する方法について説明します。create-elasticsearch-domainコマンド。

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 のバージョン] では、最新バージョンの選択をお勧めします。詳細については、「サポートされているElasticsear」を参照してください。

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

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

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

    • 先頭が小文字

    • 3 ~ 28 文字

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

  8. 標準のエンドポイントではなく、カスタムエンドポイントを使用する場合https://search-mydomain-1a2a3a4a5a6a7a8a9a0a9a8a7a.us-east-1.es.amazonaws.comで、[カスタムエンドポイントを有効にする] を選択します。次に、名前と証明書を入力します。詳細については、「Amazon Elasticsearch Service のカスタムエンドポイントの作成」を参照してください。

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

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

    注記

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

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

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

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

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

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

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

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

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

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

    注記

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

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

  15. (オプション) を有効にするにはコールドストレージ] で、コールドストレージを有効にする。コールドストレージを有効にするには、UltraWarm を有効にする必要があります。

  16. (オプション) Elasticsearch 5.3 以降を実行しているドメインの場合、自動スナップショットの開始時刻は何も実行しません。自動化されたスナップショットの詳細については、「Amazon Elasticsearch Service でのインデックスのスナップショット作成」を参照してください。

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

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

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

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

      注記

      VPC とドメインが同じ AWS リージョンVPC している必要があり、テナントがデフォルト値。Amazon ES では、専有テナントを使用する VPC をまだサポートしていません。

    2. [Subnet (サブネット)] では、1 個のサブネットを選択します。マルチ AZ を有効にした場合、2 つまたは 3 つのサブネットを選択する必要があります。Amazon ES は VPC エンドポイントを配置し、エラスティックネットワークインターフェイスをサブネット内に配置します。

      注記

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

    3. を使用する場合セキュリティグループで、Amazon ES ドメインにアクセスするために必要な VPC セキュリティグループを選択します。詳細については、「VPC を使用した Amazon Elasticsearch Service ドメインの起動」を参照してください。

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

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

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

    • 内部ユーザデータベースを使用する場合は、マスターユーザーの作成をクリックして、ユーザー名とパスワードを指定します。

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

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

    注記

    we強くドメイン上のデータを保護するために、きめ細かなアクセスコントロールを有効にすることをお勧めします。きめ細かなアクセス制御により、クラスター、インデックス、ドキュメント、フィールドの各レベルでセキュリティが提供されます。

  21. (オプション) Kibana で SAML 認証を使用する場合は、SAML 認証を準備する。ドメインが使用できるようになる場合は、Kibana の SAML 認証追加のステップについては、。

  22. (オプション) Kibana で Amazon Cognito 認証を使用する場合は、[Amazon Cognito 認証を有効にする

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

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

    注記

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

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

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

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

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

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

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

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

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

コマンドの例

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

  • という名前の Amazon ES ドメインを作成します。マイログElasticsearch バージョン 7.10

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

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

  • 1 つの IP アドレスからのみ、匿名アクセスを許可します。192.0.2.0/32

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 7.10 --elasticsearch-cluster-config InstanceType=r6g.large.elasticsearch,InstanceCount=2 --ebs-options EBSEnabled=true,VolumeType=gp2,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 ドメイン設定を示しています。

  • という名前の Amazon ES ドメインを作成します。マイログElasticsearch バージョン 7.10

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

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

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

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

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 7.10 --elasticsearch-cluster-config InstanceType=r6g.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 ドメイン設定を示しています。

  • という名前の Amazon ES ドメインを作成します。マイログElasticsearch バージョン 7.10

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

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

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

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

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 7.10 --elasticsearch-cluster-config InstanceType=r6g.xlarge.elasticsearch,InstanceCount=10,DedicatedMasterEnabled=true,DedicatedMasterType=r6g.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 を除く)、Amazon ES 設定 API リファレンスを含むCreateElasticsearchDomain。サンプルコードについては、「AWS SDK を使用して Amazon Elasticsearch Service 対話する」を参照してください。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 ヒープスペースの割合を指定します。デフォルトでは、この設定は JVM ヒープの 20% です。

注記

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

indices.query.bool.max_clause_count

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