メニュー
Amazon Elasticsearch Service
開発者ガイド (API Version 2015-01-01)

Amazon Elasticsearch Service ドメインの作成と設定

この章では、Amazon Elasticsearch Service (Amazon ES) ドメインを作成して設定する方法について説明します。Amazon ES ドメインは、Amazon Elasticsearch Service エンドポイントで公開されるハードウェア、ソフトウェア、およびデータです。

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

Amazon ES ドメインの作成

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

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

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

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

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

  2. [Analytics] の下で、[Elasticsearch Service] を選択します。

  3. Create a new domain を選択します。

    または、これが AWS アカウントに作成する最初の Amazon ES ドメインの場合、[Get Started] を選択します。

  4. [Define domain] ページで、[Domain name] にドメインの名前を入力します。

  5. [Version] で、ドメインの Elasticsearch バージョンを選択します。バージョン 5.3 を選択することをお勧めします。 詳細については、「Elasticsearch バージョンの選択」を参照してください。

  6. Next を選択します。

  7. [Instance count] で、必要なインスタンスの数を選択します。

    デフォルトは 1 つです。デフォルトの制限は、ドメインあたり 20 インスタンスです。ドメインあたり 100 インスタンスへの引き上げをリクエストするには、AWS サポートセンターでサポートケースを作成してください。スプレッドブレインの問題など、潜在的な Elasticsearch の問題を防ぐため、インスタンスは 3 つ以上選択することをお勧めします。さらに、潜在的なデータ損失を防ぐため、インデックスごとにレプリカを作成することもお勧めします。レプリカの詳細については、Elasticsearch のドキュメントの「シャードとレプリカ」を参照してください。

    注記

    T2 インスタンスタイプは、ドメインのインスタンス数が 10 以下の場合のみ使用できます。

  8. [Instance type] で、データノードのインスタンスタイプを選択します。

    Amazon ES がサポートするインスタンスタイプのリストについては、「サポートされるインスタンスタイプ」を参照してください。

    注記

    • t2.micro.elasticsearch インスタンスは、Elasticsearch バージョン 2.3 または 1.5 でのみサポートされます。

    • M3 インスタンスタイプは、us-east-2、ca-central-1、eu-west-2、ap-northeast-2、ap-south-1 の各リージョンでは使用できません。

    • I2 インスタンスタイプは、sa-east-1、ca-central-1、eu-west-2、us-east-2 の各リージョンでは使用できません。

    • R3 インスタンスタイプは、ca-central-1、eu-west-2、sa-east-1 の各リージョンでは使用できません。

  9. クラスターの安定性を確保する必要がある場合や、10 を超えるインスタンスが存在するドメインがある場合、専用マスターノードを有効にします。専用マスターノードは、クラスターの安定性を高めます。また、インスタンス数が 10 を超えるドメインに必要です。詳細については、「専用マスターノードについて」を参照してください。

    1. [Enable dedicated master] チェックボックスをオンにします。

    2. [Dedicated master instance type] で、専用マスターノードのインスタンスタイプを選択します。

      Amazon ES がサポートするインスタンスタイプのリストについては、「サポートされるインスタンスタイプ」を参照してください。

      注記

      • データノードに選択したインスタンスタイプとは異なる専用マスターノードのインスタンスタイプを選択できます。

      • T2 インスタンスタイプは、インスタンス数が 10 以下の場合にのみ使用できます。

    3. [Dedicated master instance count] で、専用マスターノードのインスタンス数を選択します。

      スプリットブレインの問題など、潜在的な Elasticsearch の問題を防ぐため、インスタンス数には奇数を選択することをお勧めします。デフォルトかつ推奨値は 3 です。

  10. (オプション) データノードの可用性を高めるため、[Enable zone awareness] チェックボックスをオンにします。

    ゾーン対応では、Amazon ES データノードが同じリージョン内の 2 つのアベイラビリティーゾーンに分散されます。ゾーン対応を有効にする場合、クラスターのデータを複製するために、インスタンス数に偶数のインスタンスを持ち、Amazon ES API を使用する必要があります。これにより、2 つのアベイラビリティーゾーンにまたがってシャードを均等に分散できるようになります。詳細については、「Enabling Zone Awareness」を参照してください。

  11. [Storage type] で、[Instance] (デフォルト) または [EBS] を選択します。

    Amazon ES ドメインにさらにストレージが必要な場合、選択したインスタンスタイプにアタッチされたストレージではなく、ストレージの EBS ボリュームを使用します。インデックスが非常に大きいドメインや、インデックスの数が多いドメインは、多くの場合 EBS ボリュームの大きいストレージ容量の恩恵を受けることができます。[EBS] を選択した場合、以下のボックスが表示されます。

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

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

    2. [EBS volume size] に、各データノードにアタッチする EBS ボリュームのサイズを入力します。

      次の式 (データノードの数) * (EBS ボリュームサイズ) を使用して、Amazon ES ドメインの EBS ベースのストレージの合計量を計算します。EBS ボリュームのサイズは、指定された EBS ボリュームタイプとそれがアタッチされるインスタンスタイプの両方によって異なります。Amazon ES ドメインでサポートされる EBS ボリュームの最小サイズと最大サイズについては、「EBS Volume Size Limits」を参照してください。サポートされている EBS ボリュームのタイプとサイズの詳細については、「EBS ベースのストレージの設定」を参照してください。

  12. [Automated snapshot start hour] で、ドメインインデックスの自動日次スナップショットの時間を選択します。

    デフォルトでは、サービスは深夜 0 時から 1 時間以内に自動スナップショットを作成されます。

  13. (オプション) [Advanced options] を選択します。

    1. (オプション) ドメインのサブリソースへのアクセスを設定する場合、[rest.action.multi.allow_explicit_index] で [false] を選択します。

      このプロパティを無効にすると、ユーザーがサブリソースのアクセスコントロールをバイパスできなくなります。アクセスコントロールの詳細については、Elasticsearch ドキュメントの「URL-based Access Control」を参照してください。サブリソースのためのアクセスポリシーについては、「Configuring Access Policies」を参照してください。

    2. (オプション) [indices.fielddata.cache.size] で、フィールドデータキャッシュに割り当てるヒープスペースの割合を指定します。

      デフォルトでは、この設定は unbounded です。フィールドデータキャッシュに関する詳細については、Elasticsearch ドキュメントの「Field Data」を参照してください。

      注記

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

  14. Next を選択します。

  15. [Set up access policy] ページで、[Select a template] ドロップダウンリストから事前設定ポリシーを選択し、必要に応じてドメイン用に編集します。または、[Edit the access policy] ボックスで 1 つ以上の Identity and Access Management (IAM) ポリシーステートメントを追加することもできます。

    Amazon Elasticsearch Service には、Amazon ES ドメインへのアクセスを設定するいくつかの方法が用意されています。コンソールには、ドメインの具体的なニーズに合わせてカスタマイズできる事前設定されたアクセスポリシーと、他の Amazon ES ドメインからアクセスポリシーをインポートする機能があります。このサービスにより、きめ細かい別個のアクセスポリシーを各ドメインのサブリソースに指定することもできるようになります。たとえば、Amazon ES ドメイン内の各インデックスに異なるポリシーを割り当てることができます。詳細については、「Configuring Access Policies」を参照してください。

  16. Next を選択します。

  17. [Review] ページでドメイン設定を確認し、[Confirm and create] を選択します。

  18. OK を選択します。

注記

新しいドメインの初期化には最大 10 分かかります。ドメインが初期化されると、データをアップロードしてドメインに変更を加えることができます。

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

コンソールを使用して Amazon ES ドメインを作成する代わりに、AWS CLI を使用してドメインを作成できます。次の構文を使用して Amazon ES ドメインを作成します。

構文

aws es create-elasticsearch-domain --domain-name <value>

[--elasticsearch-version <value>]

[--elasticsearch-cluster-config <value>]

[--ebs-options <value>]

[--access-policies <value>]

[--snapshot-options <value>]

[--advanced-options <value>]

[--cli-input-json <value>]

[--generate-cli-skeleton]

次の表は、各オプションパラメータについての詳細情報を示しています。

オプションのパラメーター

パラメータ 説明
--elasticsearch-version ドメインの Elasticsearch バージョンを指定します。現在 Amazon ES は、バージョン 1.5、2.3、5.1、および 5.3 をサポートしています。指定されていない場合、デフォルト値は 1.5 です。詳細については、「Elasticsearch バージョンの選択」を参照してください。
--elasticsearch-cluster-config ドメインのインスタンスタイプと数、ゾーン対応が有効かどうか、ドメインが専用マスターノードを使用するかどうかを指定します。専用マスターノードは、クラスターの安定性を高めます。また、インスタンス数が 10 を超えるドメインに必要です。詳細については、「Amazon ES ドメイン設定」を参照してください。
--ebs-options ドメインがストレージに EBS ボリュームを使用するかどうかを指定します。true の場合、このパラメータでは EBS ボリュームタイプ、サイズ、および該当する場合は IOPS 値も指定する必要があります。詳細については、「Configuring EBS-based Storage」を参照してください。
--access-policies ドメインのアクセスポリシーを指定します。詳細については、「Configuring Access Policies」を参照してください。
--snapshot-options サービスがドメインでインデックスの自動スナップショットを毎日実行する時間 (UTC) を指定します。デフォルト値は 0、つまり深夜 0 時です。これは、スナップショットが深夜 0 時から午前 1 時までのどこかで作成されることを意味します。詳細については、「スナップショットの設定」を参照してください。
--advanced-options HTTP リクエストオブジェクトの本文でインデックスへの参照を許可するかどうかを指定します。詳細については「Configuring Advanced Options」を参照してください。
--generate-cli-skeleton 指定したすべてのパラメータの JSON を表示します。出力をファイルに保存し、後でコマンドラインにパラメータを入力しなくても --cli-input-json パラメータを使用してファイルを読み取ることができるようにします。詳細については、『AWS Command Line Interface User Guide』の「Generate CLI Skeleton and CLI Input JSON Parameters」を参照してください。
--cli-input-json 一連の CLI パラメータを含む JSON ファイルの名前を指定します。詳細については、『AWS Command Line Interface User Guide』の「Generate CLI Skeleton and CLI Input JSON Parameters」を参照してください。

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

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

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

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

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

Copy
aws es create-elasticsearch-domain --domain-name weblogs --elasticsearch-version 5.3 --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.3 を使用して、weblogs という名前の Amazon ES ドメインを作成します。

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

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

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

  • ゾーン対応を有効にする

Copy
aws es create-elasticsearch-domain --domain-name weblogs --elasticsearch-version 5.3 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=6,ZoneAwarenessEnabled=true --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/logs/*" } ] }'

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

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

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

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

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

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

  • インデックスの毎日の自動スナップショットを 03:00 UTC に設定する

Copy
aws es create-elasticsearch-domain --domain-name weblogs --elasticsearch-version 5.3 --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" } ] }' --snapshot-options AutomatedSnapshotStartHour=3

注記

Amazon ES ドメインを正常に作成した場合、同じ名前で別のドメインを作成する試みが CLI により無視されます。CLI によりエラーは報告されません。

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

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

Amazon ES ドメインの設定

以下のいずれかの変更によって Amazon ES ドメイン設定を更新し、増加するトラフィックやデータの需要を満たします。

  • インスタンス数を変更する

  • インスタンスタイプを変更する

  • 専用マスターノードを有効または無効にする

  • ゾーン対応を有効または無効にする

  • EBS ベースのストレージを設定する

  • ドメインインデックスの自動スナップショットの開始時間を変更する

  • ネイティブ Amazon ES プロパティを設定する

注記

ストレージに EBS ボリュームを使用するようにドメインを設定する方法については、「EBS ベースのストレージの設定」を参照してください。

Amazon ES ドメイン (コンソール) の設定

次の手順に従って、コンソールを使用することにより Amazon ES の設定を更新します。

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

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

  2. [Analytics] の下で、[Elasticsearch Service] を選択します。

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

  4. Configure cluster を選択します。

  5. [Configure cluster] ページで、ドメインの設定を更新します。

    クラスターは、Amazon ES を実行し、ドメインを操作するために必要な、1 つ以上のデータノード、オプションの専用マスターノード、ストレージの集合です。

    1. データノードのインスタンスタイプを変更する場合、[Instance type] で新しいインスタンスタイプを選択します。

      Amazon ES がサポートするインスタンスタイプのリストについては、「サポートされるインスタンスタイプ」を参照してください。

      注記

      • t2.micro.elasticsearch インスタンスは、Elasticsearch バージョン 2.3 または 1.5 でのみサポートされます。

      • M3 インスタンスタイプは、us-east-2、ca-central-1、eu-west-2、ap-northeast-2、ap-south-1 の各リージョンでは使用できません。

      • I2 インスタンスタイプは、sa-east-1、ca-central-1、eu-west-2、us-east-2 の各リージョンでは使用できません。

      • R3 インスタンスタイプは、ca-central-1、eu-west-2、sa-east-1 の各リージョンでは使用できません。

    2. インスタンス数を変更する場合、[Instance count] で 1 ~ 20 の整数を選択します。ドメインあたり 100 インスタンスへの引き上げをリクエストするには、AWS サポートセンターでサポートケースを作成してください。

    3. クラスターの安定性を高める場合や、ドメインの数が 10 より多い場合、クラスターで専用マスターノードを有効にします。詳細については、「専用マスターノードについて」を参照してください。

      1. [Enable dedicated master] チェックボックスをオンにします。

      2. [Dedicated master instance type] で、専用マスターノードのインスタンスタイプを選択します。

        データノードに選択したインスタンスタイプとは異なる専用マスターノードのインスタンスタイプを選択できます。

        Amazon ES がサポートするインスタンスタイプのリストについては、「サポートされるインスタンスタイプ」を参照してください。

      3. [Dedicated master instance count] で、専用マスターノードのインスタンス数を選択します。

        スプリットブレインの問題など、潜在的な Amazon ES の問題を防ぐため、インスタンス数には奇数を選択することをお勧めします。デフォルトかつ推奨値は 3 です。

    4. ゾーン対応を有効にする場合は、[Enable zone awareness] チェックボックスをオンにします。ゾーン対応を有効にした場合、インスタンス数を偶数にする必要があります。これにより、同じリージョン内の 2 つのアベイラビリティーゾーンにまたがってシャードを均等に分散できるようになります。

    5. サービスが Amazon ES ドメインのプライマリインデックスシャードの自動スナップショットを毎日作成する時間を変更する場合、[Automated snapshot start hour] で整数を選択します。

    6. Advanced options を選択します。

      1. (オプション) ドメインのサブリソースへのアクセスを設定する場合、[rest.action.multi.allow_explicit_index] で [false] を選択します。

        このプロパティを無効にすると、ユーザーがサブリソースのアクセスコントロールをバイパスできなくなります。アクセスコントロールの詳細については、Elasticsearch ドキュメントの「URL-based Access Control」を参照してください。サブリソースのためのアクセスポリシーについては、「Configuring Access Policies」を参照してください。

      2. [rest.action.multi.allow_explicit_index] で、[false] を選択します。

      3. (オプション) [indices.fielddata.cache.size] で、フィールドデータキャッシュに割り当てるヒープスペースの割合を指定します。

        デフォルトでは、この設定は unbounded です。フィールドデータキャッシュに関する詳細については、Elasticsearch ドキュメントの「Field Data」を参照してください。

        注記

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

    7. Submit を選択します。

Amazon ES ドメイン (AWS CLI) の設定

AWS CLI を使用して Amazon ES サービスを設定するには、elasticsearch-cluster-config オプションを使用します。create-elasticsearch-domain コマンドと update-elasticsearch-domain-config コマンドの両方で次の構文が使用されます。

構文

Copy
--elasticsearch-cluster-config InstanceType=<value>,InstanceCount=<value>,DedicatedMasterEnabled=<value>,DedicatedMasterType=<value>,DedicatedMasterCount=<value>,ZoneAwarenessEnabled=<value>

注記

同じオプションのパラメータ間に空白を含めないでください。

次の表では、パラメータについて詳しく説明します。

パラメータ 有効な値 説明
InstanceType サポートされるすべてのインスタンスタイプ. 「サポートされるインスタンスタイプ」を参照してください。 インスタンスをホストするコンピューターのハードウェア設定。デフォルトは m4.large.elasticsearch です。
InstanceCount 整数 Amazon ES ドメインのインスタンス数。デフォルトは 1、最大デフォルト制限は 20 です。ドメインあたり 100 インスタンスへの引き上げをリクエストするには、AWS サポートセンターでサポートケースを作成してください。
DedicatedMasterEnabled true または false Amazon ES ドメインに専用マスターノードを使用するかどうかを指定します。 デフォルト値は false です。
DedicatedMasterType サポートされるすべてのインスタンスタイプ マスターノードをホストするコンピューターのハードウェア設定。デフォルトは m4.large.elasticsearch です。
DedicatedMasterCount 整数 専用マスターノードに使用するインスタンスの数。デフォルトは 3 です。
ZoneAwarenessEnabled true または false Amazon ES ドメインのゾーン対応を有効にするかどうかを指定します。デフォルト値は false です。

注記

  • t2.micro.elasticsearch インスタンスは、Elasticsearch バージョン 2.3 または 1.5 でのみサポートされます。

  • M3 インスタンスタイプは、us-east-2、ca-central-1、eu-west-2、ap-northeast-2、ap-south-1 の各リージョンでは使用できません。

  • I2 インスタンスタイプは、sa-east-1、ca-central-1、eu-west-2、us-east-2 の各リージョンでは使用できません。

  • R3 インスタンスタイプは、ca-central-1、eu-west-2、sa-east-1 の各リージョンでは使用できません。

次の例では、mylogs という名前の Amazon ES ドメインが作成されます。Elasticsearch のバージョンは 5.3 であり、m4.large.elasticsearch インスタンスタイプの 2 つのインスタンスが存在し、ゾーン対応が有効になっています。

Copy
aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.3 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=2,DedicatedMasterEnabled=false,ZoneAwarenessEnabled=true

ただし、ネットワークトラフィックが増加し、ドキュメントの数量とサイズが増加するに伴って、新しい Amazon ES ドメインを再設定する可能性があります。たとえば、大きいインスタンスタイプを使用して、使用するインスタンスを増やし、専用マスターノードを有効にすることができます。次の例では、これらの変更でドメイン設定を更新します。

Copy
aws es update-elasticsearch-domain-config --domain-name mylogs --elasticsearch-cluster-config InstanceType=m4.xlarge.elasticsearch,InstanceCount=3,DedicatedMasterEnabled=true,DedicatedMasterType=m4.large.elasticsearch,DedicatedMasterCount=3

Amazon ES (AWS SDK) ドメインの設定

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

EBS ベースのストレージの設定

Amazon EBS ボリュームは、1 つの インスタンスにアタッチできるブロックレベルのストレージボリュームです。EBS ボリュームを使用すると、Amazon ES ドメインのストレージリソースをコンピューティングリソースから独立して拡張することができます。EBS ボリュームは、非常に大きいデータセットが存在するが、大きいコンピューティングリソースが必要ないドメインに最も役立ちます。EBS ボリュームは、インスタンスによって提供されるデフォルトのストレージよりかなり大きい容量を持ちます。Amazon Elasticsearch Service では、以下の EBS ボリュームタイプがサポートされています。

  • 汎用 (SSD)

  • プロビジョンド IOPS (SSD)

  • マグネティック

注記

EBS ボリュームをプロビジョンド IOPS から非プロビジョンド EBS ボリュームタイプに変更するときは、IOPS 値を 0 に設定します。

EBS ベースのストレージの設定 (コンソール)

次の手順に従って、コンソールを使用することで EBS ベースのストレージを有効にします。

EBS ベースのストレージを有効にするには (コンソール)

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

  2. [Analytics] の下で、[Elasticsearch Service] を選択します。

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

  4. Configure cluster を選択します。

  5. [Storage type] で、[EBS] を選択します。

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

    • EBS ボリュームタイプに [Provisioned IOPS (SSD)] を選択した場合、[Provisioned IOPS] に必要なベースライン IOPS パフォーマンスを入力します。

  7. [EBS volume size] に、EBS ボリュームに必要なサイズを入力します。

    次の式 (データノードの数) * (EBS ボリュームサイズ) を使用して、Amazon ES ドメインの EBS ベースのストレージの合計量を計算します。EBS ボリュームのサイズは、指定された EBS ボリュームタイプとそれがアタッチされるインスタンスタイプの両方によって異なります。Amazon ES ドメインでサポートされる EBS ボリュームの最小サイズと最大サイズについては、「EBS Volume Size Limits」を参照してください。サポートされている EBS ボリュームのタイプとサイズの詳細については、「EBS ベースのストレージの設定」を参照してください。

  8. Submit を選択します。

注記

プロビジョンド IOPS EBS ボリュームの IOPS 値は、ボリュームの最大ストレージの 30 倍以下に設定する必要があります。たとえば、ボリュームの最大サイズが 100 GB の場合、3000 を超える IOPS 値を割り当てることはできません。

詳細については、Amazon EC2 のドキュメントの「Amazon EBS ボリューム」を参照してください。

EBS ベースのストレージの設定 (AWS CLI)

AWS CLI を使用して EBS ベースのストレージを設定するには、--ebs-options オプションを使用します。create-elasticsearch-domain コマンドと update-elasticsearch-domain-config コマンドの両方で次の構文が使用されます。

構文

--ebs-options EBSEnabled=<value>,VolumeType=<value>,VolumeSize=<value>,IOPS=<value>

パラメータ 有効な値 説明
EBSEnabled true または false インスタンスにより提供されるストレージではなく、ストレージの EBS ボリュームを使用するかどうかを指定します。デフォルト値は false です。
VolumeType 次のいずれかです。
  • gp2 (汎用 SSD)

  • io1 (プロビジョンド IOPS SSD)

  • standard (マグネティック)

Amazon ES ドメインで使用する EBS ボリュームタイプ。
VolumeSize 整数 各データノードの EBS ボリュームのサイズを指定します。EBS ボリュームの最小サイズと最大サイズは、指定された EBS ボリュームタイプとそれがアタッチされるインスタンスタイプの両方によって異なります。各インスタンスタイプの最小サイズと最大 EBS サイズを示す表については、「サービスの制限」を参照してください。
IOPS 整数 EBS ボリュームのベースライン I/O パフォーマンスを指定します。このパラメータは、プロビジョンド IOPS (SSD) ボリュームによってのみ使用されます。最小値は 1000、最大値は 16000 です。

注記

プロビジョンド IOPS EBS ボリュームの IOPS 値は、ボリュームの最大ストレージの 30 倍を超える値に設定しないことをお勧めします。たとえば、ボリュームの最大サイズが 100 GB の場合、3000 を超える IOPS 値を割り当てないでください。各ボリュームタイプのユースケースなどの詳細については、Amazon EC2 のドキュメントの「Amazon EBS ボリュームの種類」を参照してください。

次の例では、mylogs という名前のドメインが作成されます。Elasticsearch のバージョンは 5.3 10 GB の汎用 EBS ボリュームを使用します。

Copy
aws es create-elasticsearch-domain --domain-name=mylogs --elasticsearch-version 5.3 --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=10

ただし、検索インデックスのサイズが大きくなり、さらに大きい EBS ボリュームが必要になる可能性があります。たとえば、ベースライン I/O パフォーマンスが 3000 IOPS の 100 GB のプロビジョンド IOPS ボリュームを選択できます。次の例では、それらの変更でドメイン設定を更新します。

Copy
aws es update-elasticsearch-domain-config --domain-name=mylogs --ebs-options EBSEnabled=true,VolumeType=io1,VolumeSize=100,IOPS=3000

EBS ベースのストレージの設定 (AWS SDK)

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

アクセス ポリシーの設定

Amazon Elasticsearch Service には、Amazon ES ドメインへのアクセスを設定するいくつかの方法が用意されています。コンソールには、ドメインの具体的なニーズに合わせてカスタマイズできる事前設定されたアクセスポリシーと、他の Amazon ES ドメインからアクセスポリシーをインポートする機能があります。 このサービスにより、きめ細かい別個のアクセスポリシーを各ドメインのサブリソースに指定することもできるようになります。たとえば、Amazon ES ドメイン内の各インデックスに異なるポリシーを割り当てることができます。

アクセス設定方法 説明
リソースベースのアクセスポリシー リソースベースのアクセスポリシーは、特定の Amazon ES ドメインにアタッチされます。リソースベースのポリシーでは、ドメインのエンドポイントにアクセスできるユーザーを指定します。アクセスを許可されたユーザーを指定するには、Principal ポリシーエレメントを使用します。アクセス可能なリソースを指定するには、Resource ポリシーエレメントを使用します。
IP ベースのポリシー IP ベースのアクセスポリシーは、Amazon ES ドメインへのアクセスを 1 つ以上の特定の IP アドレスに制限します。匿名アクセスを許可するように IP ベースのポリシーを設定することもできます。これにより、未署名のリクエストを Amazon ES ドメインに送信できるようになります。サービスへのアクセスが許可される IP アドレスを指定するには、Condition ポリシー要素を使用します。
IAM ユーザーとロールベースのアクセスポリシー Amazon ES では、IAM ユーザーおよびロールに基づくアクセスポリシーもサポートされます。サービスにアクセスできるユーザーおよびロールと、それらのユーザーおよびロールが使用できるサブリソースを指定するには、IAM サービスを使用します。

アクセスポリシーの設定 (コンソール)

次の手順に従って、コンソールを使用してアクセスポリシーを設定します。

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

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

  2. [Analytics] の下で、[Elasticsearch Service] を選択します。

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

  4. Modify access policy を選択します。

  5. アクセスポリシーを編集します。

    または、[Select a template] ドロップダウンリストからいずれかのポリシーテンプレートを選択し、必要に応じてドメイン用に編集することもできます。

    事前設定されたアクセスポリシー 説明
    Allow or deny access to one or more AWS accounts or IAM users このポリシーは、1 つ以上の AWS アカウントや IAM ユーザーへのアクセスを許可または拒否するために使用されます。
    Allow open access to the domain

    このポリシーでは、ドメイン内のインデックスとドキュメントをだれでも削除、変更、またはアクセスできるため、実際の使用はお勧めしません。not recommendedこのポリシーは、テスト専用に用意されたものです。これらの設定を適用したドメインに、機密データをロードしないでください。

    Deny access to the domain このポリシーでは、Amazon ES コンソールを通じたアクセス、またはドメインを作成した AWS アカウントの所有者によるアクセスのみ許可されます。
    Allow access to the domain from specific IP(s) このポリシーは、特定の IP アドレスまたは IP アドレスの範囲への匿名アクセスを制限するために使用されます。
    Copy access policy from another domain このポリシーは、他のドメインから既存のアクセスポリシーをインポートする際に役立ちます。
  6. Submit を選択します。

アクセス ポリシーの設定 (AWS CLI)

AWS CLI を使用してアクセスポリシーを設定するには、--access-policies オプションを使用します。create-elasticsearch-domain コマンドと update-elasticsearch-domain-config コマンドの両方で次の構文が使用されます。

構文

Copy
--access-policies=<value>

パラメータ 有効な値 説明
--access-policies JSON Amazon ES ドメインのアクセスポリシーを指定します。

Amazon Elasticsearch Service は、「IAM ポリシーエレメントの参照」で説明されているすべてのポリシーエレメントをサポートしています。 次の表は、最も一般的なエレメントを示しています。

有効な値 JSON ポリシーエレメント 説明
ポリシー言語の最新バージョンは 2012-10-17 です。すべてのアクセスポリシーでこの値を指定する必要があります。 Version アクセスポリシーの言語バージョンを指定します。
Allow または Deny Effect 指定されたアクションへのアクセスをステートメントが許可するかブロックするかを指定します。
任意の文字列 Sid ポリシーステートメントのわかりやすい名前。このフィールドはオプションです。
Amazon ES では、HTTP メソッドとして次のアクションがサポートされています。各 HTTP メソッドに別個のアクセスポリシーをアタッチできます。
  • es:ESHttpDelete

  • es:ESHttpGet

  • es:ESHttpHead

  • es:ESHttpPost

  • es:ESHttpPut

Amazon ES では、サービス設定 API の以下のアクションもサポートされています。

  • es:CreateElasticsearchDomain

  • es:DescribeElasticsearchDomain

  • es:DescribeElasticsearchDomains

  • es:DescribeElasticsearchDomainConfig

  • es:DeleteElasticsearchDomain

  • es:ListDomainNames

  • es:AddTags

  • es:ListTags

  • es:RemoveTags

  • es:UpdateElasticsearchDomainConfig

各 API および各 API に必要な HTTP リクエストメソッドの説明については、「Amazon ES 設定 API リファレンス」を参照してください。

Action アクセスポリシーが適用される Amazon ES アクションを指定します。任意の HTTP メソッドを使用したドメインエンドポイントへのフルアクセスが許可されるように、"Action":"es:*" の値を割り当てます。
Amazon ES のドメインリソースを指定するには、次の構文を使用します。

arn:aws:es:<region>:<aws_account_id>:domain/<domain-name>/<sub-resource>

すべてのサブリソースへのアクセスを許可または拒否するには、サブリソースとしてワイルドカード (*) を指定します。

arn:aws:es:<region>:<aws_account_id>:domain/<domain-name>/*

特定のサブリソースへのすべてのアクセスを許可または拒否するには、次の構文を使用します。

arn:aws:es:<region>:<aws_account_id>:domain/<domain-name>/<sub-resource>/*

Amazon ES では、インデックスなど、各サブリソースに異なるアクセスポリシーを定義できます。各 Amazon ES API に異なるアクセスポリシーを定義することもできます。たとえば、アクセス権限付与の範囲を Amazon ES _search API のみに制限できます。

arn:aws:es:us-east-1:<account-id>:domain/weblogs/_search

Resource アクセスポリシーが適用される特定のオブジェクトを指定します。
Amazon ES では、IAM の使用ガイドの「Available Global Condition Keys」で説明されているすべての条件がサポートされています。 Condition アクセスポリシーが有効になるタイミングを判断する条件を指定します。匿名の IP ベースのアクセスを設定する場合、アクセスルールを適用する IP アドレスを指定します。例: "IpAddress": {"aws:SourceIp": ["192.0.2.0/32"]}
次のいずれかです。
  • 別の AWS アカウント

    "Principal":{"AWS":["arn:aws:iam::<aws_account_id>:root"]}

  • IAM ユーザー

    "Principal":{"AWS": [arn:aws:iam::<aws_account_id>:user/<username>}

Principal リソースへのアクセスを許可または拒否する AWS アカウントまたは IAM ユーザーを指定します。ワイルドカード (*) を指定するとドメインへの匿名アクセスが可能になるため、推奨されません。匿名アクセスを有効にする場合、Amazon ES ドメインにリクエストを送信できる IP アドレスを制限する IP ベースの条件を追加することを強くお勧めします。

詳細については、IAM ポリシーエレメントの参照の「プリンシパル」を参照してください。

リソースベースのポリシーの例

リソースベースのアクセスポリシーの次の例では、サービスへのアクセスが、Principal ポリシーエレメントにおいてユーザーの AWS アカウント ID 555555555555 により識別される単一のユーザーに制限されます。このユーザーには、index1 ドメインのサブリソースへのアクセスが許可されますが、ドメインの他のインデックスにはアクセスできません。

Copy
aws es update-elasticsearch-domain-config --domain-name mylogs --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow","Principal": {"AWS": "arn:aws:iam::123456789012:root" },"Action":"es:*","Resource":"arn:aws:es:us-east-1:555555555555:domain/index1/*" } ] }'

IP ベースのポリシーの例

IP ベースのアクセスポリシーの次の例では、匿名アクセスが許可されますが、そのアクセスが単一の IP アドレス範囲に制限されます。

Copy
aws es update-elasticsearch-domain-config --domain-name mylogs --access-policies '{"Version": "2012-10-17","Statement": [{"Action":"es:*","Principal":"*","Effect":"Allow","Condition": {"IpAddress":{"aws:SourceIp":["192.0.2.0/32"]}}}]}'

IAM ベースのポリシーの例

Amazon ES コンソールではなく AWS IAM コンソールを使用して IAM ベースのアクセスポリシーを作成します。IAM ベースのアクセスポリシーの作成については、IAM のドキュメントを参照してください。

アクセスポリシーの設定 (AWS SDK)

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

スナップショットの設定

Amazon Elasticsearch Service では、ドメインのプライマリインデックスシャードとレプリカシャードの数の自動スナップショットが毎日作成されます。デフォルトでは、サービスは深夜 0 時に自動スナップショットを作成しますが、別の時間を選択できます。

スナップショットの設定 (コンソール)

次の手順に従って、コンソールを使用して毎日の自動インデックススナップショットを設定します。

自動スナップショットを設定するには

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

  2. [Analytics] の下で、[Elasticsearch Service] を選択します。

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

  4. Configure cluster を選択します。

  5. [Automated snapshot start hour] で、サービスが自動スナップショットを作成する新しい時間を選択します。

  6. Submit を選択します。

スナップショットの設定 (AWS CLI)

--snapshot-options オプションには次の構文を使用します。オプションの構文は、create-elasticsearch-domain コマンドと update-elasticsearch-domain-config コマンドのどちらでも同じです。

構文

--snapshot-options AutomatedSnapshotStartHour=<value>

パラメータ 有効な値 説明
AutomatedSnapshotStartHour 0 から 23 までの整数 サービスが新しいドメインでインデックスの自動スナップショットを毎日実行する時間 (UTC) を指定します。デフォルト値は 0、つまり深夜 0 時です。これは、スナップショットが深夜 0 時から午前 1 時までのどこかで作成されることを意味します。

次の例では、自動スナップショットを 01:00 UTC に設定します。

Copy
aws es update-elasticsearch-domain-config --domain-name mylogs --region us-east-2 --snapshot-options AutomatedSnapshotStartHour=1

スナップショットの設定 (AWS SDK)

AWS SDK では (Android および iOS SDK を除く)、「Amazon ES の設定 API リファレンス」で定義されたすべてのアクションがサポートされています。これには、update-elasticsearch-domain-config コマンドへの --snapshots-options パラメーターが含まれます。AWS SDK のインストールと使用の詳細については、「AWS Software Development Kits」を参照してください。

詳細オプションの設定

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

rest.action.multi.allow_explicit

HTTP リクエスト本文中で、インデックスへの明示参照を許可するかどうかを指定します。特定のインデックスやドメイン API など、ドメインのサブリソースのアクセスポリシーを設定する場合、このプロパティを無効にする必要があります。詳細については、「URL-based Access Control」を参照してください。サブリソースのためのアクセスポリシーについては、「Configuring Access Policies」を参照してください。

indices.fielddata.cache.size

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

詳細オプションの設定 (コンソール)

次の手順に従って、リクエスト本文でインデックスを明示的に参照して HTTP リクエストの処理を無効にします。デフォルトでは、値は true に設定されます。

詳細オプションを設定するには (コンソール)

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

  2. [Analytics] の下で、[Elasticsearch Service] を選択します。

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

  4. Configure cluster を選択します。

  5. Advanced options を選択します。

  6. rest.action.multi.allow_explicit_indexfalse を選択し、HTTP リクエストの本文におけるインデックスの明示的な参照を無効にします。

  7. indices.fielddata.cache.size に、フィールドデータキャッシュに割り当てる Java ヒープスペースの割合を入力します。

    デフォルトでは、この設定は unbounded です。フィールドデータキャッシュに関する詳細については、Elasticsearch ドキュメントの「Field Data」を参照してください。

    注記

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

  8. Submit を選択します。

詳細オプションの設定 (AWS CLI)

--advanced-options オプションには次の構文を使用します。オプションの構文は、create-elasticsearch-domain コマンドと update-elasticsearch-domain-config コマンドのどちらでも同じです。

構文

--advanced-options rest.action.multi.allow_explicit=<true|false>, indices.fielddata.cache.size=<percentage_heap>

パラメータ 有効な値 説明
--advanced-options rest.action.multi.allow_explicit=<true|false>, HTTP リクエスト本文で、インデックスの明示的な参照を許可するかどうかを指定します。このような参照は、HTTP リクエスト URL では常に許可されます。個々のサブリソースへのアクセスを設定する場合は false にする必要があります。デフォルトでは、値は true に設定されます。
indices.fielddata.cache.size=<percentage_heap> フィールドデータキャッシュに割り当てるヒープスペースの割合を指定します。デフォルトでは、この設定は unbounded です。

注記

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

次の例では、HTTP リクエスト本文でのインデックスの明示的な参照を無効にし、フィールドデータキャッシュを合計 Java ヒープの 40% に制限します。

aws es update-elasticsearch-domain-config --domain-name mylogs --region us-east-1 --advanced-options rest.action.multi.allow_explicit_index=false, indices.fielddata.cache.size=40

詳細オプションの設定 (AWS SDK)

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