メニュー
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] ページの [ドメイン名] で、ドメインの名前を入力します。ドメイン名は以下の基準を満たす必要があります。

    • ドメインを一意に識別する

    • 先頭が小文字

    • 3 ~ 28 文字

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

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

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

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

    デフォルトは 1 つです。最大値については、「クラスターとインスタンスの制限」を参照してください。スプレッドブレインの問題など、一般的な Elasticsearch の問題を防ぐため、インスタンスは 3 つ以上選択することをお勧めします。さらに、潜在的なデータ損失を防ぐため、インデックスごとにレプリカを作成することもお勧めします。レプリカの詳細については、Elasticsearch のドキュメントの「シャードとレプリカ」を参照してください。

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

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

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

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

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

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

      注記

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

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

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

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

    ゾーン対応では、Amazon ES データノードが同じリージョン内の 2 つのアベイラビリティーゾーンに分散されます。ゾーン対応を有効にする場合は、[Instance count] にインスタンス数を偶数で指定する必要があります。また、ネイティブの Elasticsearch API を使用して、クラスターのレプリカシャードを作成する必要があります。このプロセスにより、2 つのアベイラビリティーゾーンにまたがってシャードを均等に分散できるようになります。詳細については、「Enabling Zone Awareness」を参照してください。

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

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

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

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

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

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

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

    詳細と推奨事項については、「自動スナップショットの設定」を参照してください。

  13. (オプション) [Advanced options] を選択します。オプションをまとめた一覧については、「詳細オプションの設定」を参照してください。

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

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

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

      注記

      VPC とドメインは同じ AWS リージョンに存在する必要があります。

    2. [サブネット] では、1 個のサブネットを選択します。ステップ 10 でゾーン対応を有効にした場合は、2 個のサブネットを選択する必要があります。Amazon ES は VPC エンドポイントと elastic network interfaces (ENI) を 1 個のサブネットまたは複数のサブネットに配置します。

      注記

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

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

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

  16. [ドメインアクセスポリシーの設定] では、[テンプレートを選択] のダウンリストから事前定義されたポリシーを選択し、使用するドメインの必要性に応じて編集します。または、アクセスポリシーの追加または編集 ボックスで Identity and Access Management (IAM) ポリシーステートメントを 1 つ以上追加することもできます。詳細については、「アクセス ポリシーの設定」および 「VPC ドメインのアクセスポリシーについて」を参照してください。

    注記

    ステップ 15 で [VPC エンドポイント] を選択した場合、指定した IP アドレスからドメインにアクセス許可する事前定義のポリシーはドロップダウンメニューから利用できません。代わりに、どの IP アドレスが VPC エンドポイントにアクセスできるかを制御するセキュリティグループを使用する必要があります。セキュリティグループおよび VPC についての詳細は、「VPCs and VPC Endpoints」を参照してください。

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

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

  19. [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]

[--log-publishing-options]

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

オプションのパラメータ 説明
--elasticsearch-version ドメインの Elasticsearch バージョンを指定します。指定されていない場合、デフォルト値は 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」を参照してください。
--log-publishing-options Amazon ES から Elasticsearch スローログを CloudWatch に発行するかどうかを指定します。詳細については、「スローログの設定」を参照してください。

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

  • Elasticsearch バージョン 5.5 を使用して、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.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 を使用して、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.5 --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.5 を使用して、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.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" } ] }' --snapshot-options AutomatedSnapshotStartHour=3

注記

Amazon ES ドメインを作成する際に、同じ名前のドメインが既に存在しても、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 ドメイン設定を更新できます。

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

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

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

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

  • ストレージ設定を行う

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

  • VPC エンドポイント設定を変更する

  • 詳細オプションを設定する

注記

ストレージに 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 がサポートするインスタンスタイプのリストについては、「サポートされるインスタンスタイプ」を参照してください。

    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. ドメインを作成したときに VPC エンドポイントを有効化していない場合には、ステップ 7 にスキップします。VPC エンドポイントを有効にした場合は、VPC エンドポイントが配置されるサブネットを変更でき、セキュリティグループも変更できます。

      1. [サブネット] では、1 個のサブネットを選択します。このサブネットには、ネットワークインターフェースに十分な数の IP アドレスのリザーブが必要です。ゾーン対応を有効にした場合は、2 個のサブネットを選択する必要があります。サブネットは、同じリージョン内の異なるアベイラビリティーゾーンに存在している必要があります。詳細については、「VPCs and VPC Endpoints」を参照してください。

      2. [セキュリティグループ] で、VPC エンドポイントで Amazon ES が配置するセキュリティグループを追加します。

    7. (オプション) [Advanced options] を選択します。オプションをまとめた一覧については、「詳細オプションの設定」を参照してください。

    8. [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 です。

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

Copy
aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --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 ベースのストレージの設定 (コンソール)

次の手順に従って、コンソールを使用することで 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 volume size] はノードあたりのサイズです。Amazon ES ドメインの合計クラスターサイズは、(データノードの数) * (EBS ボリュームサイズ) という式を使用して計算できます。EBS ボリュームの最小サイズと最大サイズは、指定された 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 ボリュームの種類」を参照してください。

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

Copy
aws es create-elasticsearch-domain --domain-name=mylogs --elasticsearch-version 5.5 --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」を参照してください。

VPC アクセス設定の変更

ドメインを VPC 内に存在するように設定した場合、Amazon ES コンソールを使用して設定を変更できます。パブリックドメインを VPC ドメインに移行するには、「パブリックアクセスから VPC アクセスに移行する」を参照してください。

VPC アクセスの設定 (コンソール)

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

VPC エンドポイントを設定するには (コンソール)

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

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

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

  4. [Configure cluster] を選択します。

  5. [ネットワークの構成] セクションの [サブネット] で 1 個のサブネットを選択します。ゾーン対応を有効にした場合は、2 個のサブネットを選択する必要があります。サブネットは、同じリージョン内の異なるアベイラビリティーゾーンに存在している必要があります。詳細については、「Amazon Elasticsearch Service ドメインの VPC サポート」を参照してください。

    注記

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

  6. [セキュリティグループ] で、VPC エンドポイントで Amazon ES が配置するセキュリティグループを追加します。

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

アクセス ポリシーの設定

Amazon Elasticsearch Service には、Amazon ES ドメインへのアクセスを設定するいくつかの方法が用意されています。コンソールは、ドメインの特定のニーズに対応してカスタマイズできる事前定義のアクセスポリシーを提供します。ほかの Amazon ES ドメインからアクセスポリシーをインポートすることもできます。また、きめ細かい別個のアクセスポリシーを各ドメインのサブリソースに指定することもできます。たとえば、Amazon ES ドメイン内の各インデックスに異なるポリシーを割り当てることができます。上記のアクセスポリシーが VPC サポートを操作する方法についての詳細は、「VPC ドメインのアクセスポリシーについて」を参照してください。

アクセス設定方法 説明
リソースベースのアクセスポリシー リソースベースのアクセスポリシーは、特定の Amazon ES ドメインにアタッチされます。リソースベースのポリシーでは、ドメインのエンドポイントにアクセスできるユーザーを指定します。アクセスを許可されたユーザーを指定するには、Principal ポリシーエレメントを使用します。アクセス可能なリソースを指定するには、Resource ポリシーエレメントを使用します。
IP ベースのポリシー

IP ベースのアクセスポリシーは、Amazon ES ドメインへのアクセスを 1 つ以上の特定の IP アドレスに制限します。匿名アクセスを許可するように IP ベースのポリシーを設定することもできます。これにより、未署名のリクエストを Amazon ES ドメインに送信できるようになります。サービスへのアクセスが許可される IP アドレスを指定するには、Condition ポリシー要素を使用します。

注記

ドメインで VPC エンドポイントを有効化した場合、指定する IP アドレスからドメインにアクセスを許可する ([Allow access to the domain from specific IPs]) 事前定義のポリシーは利用できません。代わりに、どの IP アドレスが VPC エンドポイントにアクセスできるかを制御するセキュリティグループを使用する必要があります。詳細については、「VPC ドメインのアクセスポリシーについて」を参照してください。

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] ドロップダウンリストからいずれかのポリシーテンプレートを選択し、必要に応じてドメイン用に編集することもできます。

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

    このポリシーは、ドメイン内のインデックスおよびドキュメントを誰でも削除、変更あるいはアクセスできることを許可するため、パブリックエンドポイントのドメインには [推奨されません]。このポリシーは、テスト専用に用意されたものです。これらの設定を適用したドメインに、機密データをロードしないでください。

    Deny access to the domain このポリシーでは、Amazon ES コンソールを通じたアクセス、またはドメインを作成した AWS アカウントの所有者によるアクセスのみ許可されます。
    Allow access to the domain from specific IP(s)

    このポリシーは、特定の IP アドレスまたは IP アドレスの範囲への匿名アクセスを制限するために使用されます。

    注記

    ドメインに VPC エンドポイントを有効化した場合、このポリシーは利用できません。代わりに、どの 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 コンソールではなく IAM コンソールを使用して IAM ベースのアクセスポリシーを作成します。IAM には、Amazon ES 用の AWS 管理ポリシーが 2 つ (AmazonESFullAccessAmazonESReadOnlyAccess) ありますが、独自のカスタムポリシーを作成することもできます。IAM ベースのアクセスポリシーの作成については、このガイドに記載されている Amazon ES の IAM ポリシー要素の一覧と、IAM ユーザーガイドの「Amazon ES のアクション」を参照してください。

次に示す IAM ポリシーの例では、指定された IAM ロールのすべてのユーザーに、特定ドメインの Amazon ES 設定サービスに対するフルアクセスを付与しています。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/allowed-role-1" ] }, "Action": [ "es:*" ], "Resource": "arn:aws:es:<Region>:<Account>:domain/<DomainName>" } ] }

注記

AmazonESReadOnlyAccess ポリシーが適用されたユーザーは、コンソールでクラスターのヘルスステータスを確認できません。これらのユーザーがヘルスステータスを確認できるようにするには、アクセスポリシーに "es:ESHttpGet" アクションを追加し、これをユーザーのアカウントまたはロールにアタッチします。

アクセスポリシーの設定 (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 時ですが、サービスの負荷が最も少ない時間を選択する必要があります。

これらのスナップショットの使用方法の詳細については、「スナップショットの復元」を参照してください。

警告

クラスターの状態が赤色の間、サービスは Amazon ES インデックスのスナップショット作成を停止します。赤色のクラスターでそれ以降インデックスにアップロードされた内容は、インデックスのヘルスステータスが緑色であっても、スナップショットの停止によるクラスターの障害時に失われる可能性があります。データの消失を防止するには、クラスター内のインデックスに追加データをアップロードする前にクラスターの状態を緑色に戻します。

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

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

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

  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 など、ドメインのサブリソースのアクセスポリシーを設定する場合、この値を false に設定にする必要があります。このプロパティを無効にすると、ユーザーがサブリソースのアクセスコントロールをバイパスできなくなります。デフォルト値は true です。詳細については、「URL-based Access Control」を参照してください。サブリソースのためのアクセスポリシーについては、「Configuring Access Policies」を参照してください。

indices.fielddata.cache.size

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

注記

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

indices.query.bool.max_clause_count

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

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

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

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

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

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

  4. [Configure cluster] を選択します。

  5. [Advanced options] を選択します。

  6. 必要に応じてオプションを指定します。これらは詳細オプションであるため、変更による影響を理解している場合以外は変更しないでください。

  7. [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>, indices.query.bool.max_clause_count=<int>

パラメータ 有効な値
--advanced-options rest.action.multi.allow_explicit=<true|false>
indices.fielddata.cache.size=<percentage_heap>
indices.query.bool.max_clause_count=<int>

次の例では、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」を参照してください。

スローログの設定

スローログは、Amazon ES が Amazon CloudWatch Logs を通じて公開する Elasticsearch 機能です。これらのログは、パフォーマンスの問題のトラブルシューティングに役立ちますが、デフォルトでは無効になっています。有効にすると、標準の CloudWatch 料金が適用されます。

Amazon ES は、検索とインデックスの 2 つのスローログを公開します。これらのログの詳細については、Elasticsearch ドキュメントの「Slow Log」を参照してください。

スローログの発行の有効化 (コンソール)

CloudWatch へのスローログの発行を有効にするには、次の手順を使用します。

CloudWatch へのスローログの発行を有効にするには

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

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

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

  4. [Logs] タブで、必要なログの [Enable] を選択します。

  5. CloudWatch ロググループを作成するか、既存のロググループを選択します。

    注記

    検索およびインデックスのスローログを有効にする場合は、それぞれを別個のロググループに発行することをお勧めします。分離することで、ログをスキャンしやすくなります。

  6. 適切なアクセス権限を含むアクセスポリシーを選択するか、コンソールに用意された JSON を使用してポリシーを作成します。

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "cw_log_group_arn" } ] }
  7. [Enable] を選択します。

    ドメインのステータスが [Active] から [Processing] に変わります。ステータスは、ログの発行が有効になる前に [Active] に戻る必要があります。このプロセスには最長 30 分かかることがあります。

ログの発行を有効にしたら、「Elasticsearch ログしきい値の設定」を参照してください。

スローログの発行の有効化 (AWS CLI)

ログの発行を有効にする前に、CloudWatch ロググループが必要です。まだロググループがない場合は、次のコマンドを使用して作成できます。

Copy
aws logs create-log-group --log-group-name my-log-group

次のコマンドを入力してロググループの ARN を検索し、それを書き留めます

Copy
aws logs describe-log-groups --log-group-name my-log-group

これで、このロググループに書き込むためのアクセス許可を Amazon ES に付与できます。ロググループの末尾に近い位置にロググループの ARN を指定する必要があります。

Copy
aws logs put-resource-policy --policy-name my-policy --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com"}, "Action":[ "logs:PutLogEvents"," logs:PutLogEventsBatch","logs:CreateLogStream"],"Resource": "cw_log_group_arn"}]}'

最後に、--log-publishing-options オプションを使用して発行を有効化できます。オプションの構文は、create-elasticsearch-domain コマンドと update-elasticsearch-domain-config コマンドのどちらでも同じです。

パラメータ 有効な値
--log-publishing-options SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}

注記

検索およびインデックスのスローログを有効にする場合は、それぞれを別個のロググループに発行することをお勧めします。分離することで、ログをスキャンしやすくなります。

次の例では、指定されたドメインに対して検索およびインデックスのスローログの発行を有効にします。

Copy
aws es update-elasticsearch-domain-config --domain-name my-domain --log-publishing-options "SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-log-group,Enabled=true},INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-other-log-group,Enabled=true}"

CloudWatch への発行を無効にするには、Enabled=false を使用して同じコマンドを実行します。

ログの発行を有効にしたら、「Elasticsearch ログしきい値の設定」を参照してください。

スローログの発行の有効化 (AWS SDK)

スローログの発行を有効にする前に、CloudWatch ロググループを作成してその ARN を取得し、そのロググループに書き込むためのアクセス許可を Amazon ES に付与する必要があります。関連するオペレーションは Amazon CloudWatch Logs API Reference に記載されています。

  • CreateLogGroup

  • DescribeLogGroup

  • PutResourcePolicy

これらのオペレーションには、AWS SDK を使用してアクセスできます。

AWS SDK (Android および iOS SDK を除く) は、Amazon ES 設定 API リファレンスに定義されているすべてのオペレーションをサポートします。これには、CreateElasticsearchDomainUpdateElasticsearchDomainConfig--log-publishing-options オプションも含まれます。

ログの発行を有効にしたら、「Elasticsearch ログしきい値の設定」を参照してください。

Elasticsearch ログしきい値の設定

Elasticsearch では、デフォルトでスローログが無効になっています。CloudWatch へのスローログの発行を有効にしたら、さらに Elasticsearch インデックスごとにログしきい値を指定する必要があります。これらのしきい値は、ログに記録する内容とログレベルを正確に定義します。Elasticsearch バージョンごとに設定はわずかに異なります。各バージョンの概要については、Elasticsearch ドキュメントの「Slow Log」を参照してください。

これらの設定は、Elasticsearch REST API を通じて指定します。以下に例を示します。

Copy
curl -XPUT elasticsearch_domain_endpoint/index/_settings --data '{"index.search.slowlog.threshold.query.warn": "5s","index.search.slowlog.threshold.query.info": "2s"}'

スローログの正常な発行をテストするには、非常に低い値から開始してログが CloudWatch に表示されることを確認し、その後、しきい値をより有用なレベルに高めていきます。

ログが表示されない場合は、以下を確認してください。

  • CloudWatch ロググループが存在しているかどうか? CloudWatch コンソールを確認します。

  • ロググループに書き込むためのアクセス許可が Amazon ES にあるかどうか? Amazon ES コンソールを確認します。

  • Amazon ES ドメインはロググループに発行するように設定されているかどうか? Amazon ES コンソールを確認するか、AWS CLI describe-elasticsearch-domain-config オプションを使用するか、いずれかの SDK を使用して DescribeElasticsearchDomainConfig を呼び出します。

  • Elasticsearch ログしきい値が低くてリクエストが超過していないかどうか? インデックスのしきい値を確認するには、次のコマンドを使用します。

    Copy
    curl -XGET elasticsearch_domain_endpoint/index/_settings?pretty

インデックスのスローログを無効にする場合は、変更したしきい値をデフォルト値の -1 に戻します。

Amazon ES コンソールまたは AWS CLI を使用して CloudWatch への発行を無効にしても、Elasticsearch でのログ生成は停止されません。これらのログの発行が停止されるだけです。スローログが不要になった場合は、インデックスの設定を確認してください。

スローログの表示

CloudWatch でスローログを表示する方法は、その他の CloudWatch ログを表示する方法と同じです。詳細については、Amazon CloudWatch Logs User Guide の「ログデータの表示」を参照してください。

ログを表示する際の考慮事項は以下のとおりです。

  • Amazon ES は、スローログの行ごとに最初の 255,000 文字のみを CloudWatch に発行します。残りのコンテンツは切り捨てられます。

  • CloudWatch では、ログの内容を識別しやすいようにログストリーム名のサフィックスとして -index-slow-logs または -search-slow-logs が使用されます。