Amazon Elasticsearch Service
開発者ガイド (API バージョン 2015-01-01)

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

この章では、Amazon Elasticsearch Service (Amazon ES) ドメインを作成して設定する方法について説明します。An Amazon ES domain is synonymous with an Elasticsearch cluster. Domains are clusters with the settings, instance types, instance counts, and storage resources that you specify.

開始方法チュートリアルの簡単な手順とは異なり、この章ではすべてのオプションについて説明し、関連するリファレンス情報を提供します。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. [分析] で、[Elasticsearch Service] を選択します。

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

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

  4. [Define domain (ドメインの定義)] ページの [Domain name (ドメイン名)] で、ドメインの名前を入力します。ドメイン名は以下の基準を満たす必要があります。

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

    • 先頭が小文字

    • 3 ~ 28 文字

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

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

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

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

    デフォルトは 1 つです。最大値については、「クラスターとインスタンスの制限」を参照してください。スプレッドブレインの問題などの潜在的な Elasticsearch の問題を防ぐため、インスタンス数は 3 つ以上を選択することが推奨されます。専用マスターノードが 3 つの場合は、レプリケーション用のデータノードは少なくとも 2 つにすることをお勧めします。単一ノードのクラスターは、開発とテスト用に適切ですが、本稼働のワークロードには使用しないでください。詳細については、Amazon ES ドメインのサイジングを参照してください。

  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 つのアベイラビリティーゾーンにまたがってシャードを均等に分散できるようになります。詳細については、「ゾーン対応の有効化」を参照してください。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      注記

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

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

      注記

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

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

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

  17. (オプション) ノード間の暗号化を有効にするには、[Node-to-node encryption (ノード間の暗号化)] を選択します。

  18. (オプション) ログインページで Kibana を保護する場合は、[Enable Amazon Cognito for authentication (Amazon Cognito で認証を有効にする)] を選択します。

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

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

    注記

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

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

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

  22. [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>] [--vpc-options <value>] [--advanced-options <value>] [--log-publishing-options <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>] [--encryption-at-rest-options <value>] [--cognito-options <value>] [--node-to-node-encryption-options <value>]

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

オプションのパラメータ 説明
--elasticsearch-version ドメインの Elasticsearch バージョンを指定します。指定がなければ、デフォルト値は 1.5 です。詳細については、「Elasticsearch バージョンの選択」を参照してください。
--elasticsearch-cluster-config ドメインのインスタンスタイプと数、ゾーン対応が有効かどうか、ドメインが専用マスターノードを使用するかどうかを指定します。専用マスターノードは、クラスターの安定性を高めます。また、インスタンス数が 10 を超えるドメインに必要です。詳細については、「Amazon ES ドメインの設定」を参照してください。
--ebs-options ドメインがストレージに EBS ボリュームを使用するかどうかを指定します。true の場合、このパラメータでは EBS ボリュームタイプ、サイズ、および該当する場合は IOPS 値も指定する必要があります。詳細については、「EBS ベースのストレージの設定」を参照してください。
--access-policies ドメインのアクセスポリシーを指定します。詳細については、「アクセスポリシーの設定」を参照してください。
--snapshot-options サービスがドメインでインデックスの自動スナップショットを毎日実行する時間 (UTC) を指定します。デフォルト値は 0、つまり深夜 0 時です。これは、スナップショットが深夜 0 時から午前 1 時までのどこかで作成されることを意味します。詳細については、「スナップショットの設定」を参照してください。
--advanced-options HTTP リクエストオブジェクトの本文でインデックスへの参照を許可するかどうかを指定します。詳細については「詳細オプションの設定」を参照してください。
--generate-cli-skeleton 指定したすべてのパラメータの JSON を表示します。出力をファイルに保存し、後でコマンドラインにパラメータを入力しなくても --cli-input-json パラメータを使用してファイルを読み取ることができるようにします。詳細については、AWS コマンドラインインターフェイスのユーザーガイドの「CLI Skeleton および CLI Input JSON パラメータの生成」を参照してください。
--cli-input-json 一連の CLI パラメータを含む JSON ファイルの名前を指定します。詳細については、AWS コマンドラインインターフェイスのユーザーガイドの「CLI Skeleton および CLI Input JSON パラメータの生成」を参照してください。
--log-publishing-options Amazon ES から Elasticsearch ログを CloudWatch に発行するかどうかを指定します。詳細については、「ログの設定」を参照してください。
--vpc-options Amazon VPC (VPC) 内で Amazon ES ドメインを起動するかどうかを指定します。詳細については、「Amazon Elasticsearch Service ドメインの VPC サポート」を参照してください。
--encryption-at-rest-options 保管時のデータの暗号化を有効にするかどうかを指定します。
--cognito-options Kibana の Amazon Cognito 認証」を使用するかどうか指定します。
--node-to-node-encryption-options ノード間の暗号化を有効にするには true を指定します。

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

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

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

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

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

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 によって識別される単一のユーザーに制限する

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

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 に設定する

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 を除く)、CreateElasticsearchDomain も含めて、「Amazon ES の設定 API リファレンス」で定義されたすべてのアクションがサポートされています。サンプルコードについては、「Amazon Elasticsearch Service での AWS SDK の使用」を参照してください。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. [分析] で、[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. [Subnets (サブネット)] では、1 個のサブネットを選択します。このサブネットには、ネットワークインターフェースに十分な数の IP アドレスのリザーブが必要です。ゾーン対応を有効にした場合は、2 個のサブネットを選択する必要があります。サブネットは、同じリージョン内の異なるアベイラビリティーゾーンに存在している必要があります。詳細については、「Amazon Elasticsearch Service ドメインの VPC サポート」を参照してください。

      2. [Security groups (セキュリティグループ)] で、ドメインにアクセスするために必要なセキュリティグループを追加します。

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

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

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

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

構文

--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 ドメインを作成します。

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 ドメインを再設定する可能性があります。たとえば、大きいインスタンスタイプを使用して、使用するインスタンスを増やし、専用マスターノードを有効にすることができます。次の例では、これらの変更でドメイン設定を更新します。

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 を除く)、UpdateElasticsearchDomainConfig も含めて、「Amazon ES の設定 API リファレンス」で定義されたすべてのアクションがサポートされています。サンプルコードについては、「Amazon Elasticsearch Service での AWS SDK の使用」を参照してください。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. [分析] で、[Elasticsearch Service] を選択します。

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

  4. [Configure cluster (クラスターの設定)] を選択します。

  5. [Storage type (ストレージタイプ)] で [EBS] を選択します。

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

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

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

    [EBS volume size (EBS ボリュームサイズ)] はノードあたりのサイズです。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 ボリュームのサイズを GB で指定します。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 という名前のドメインを作成します。

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 ボリュームを選択できます。次の例では、それらの変更でドメイン設定を更新します。

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 を除く)、UpdateElasticsearchDomainConfig--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. [分析] で、[Elasticsearch Service] を選択します。

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

  4. [Configure cluster (クラスターの設定)] を選択します。

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

    注記

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

  6. [Security groups (セキュリティグループ)] で、ドメインにアクセスするために必要なセキュリティグループを追加します。

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

Kibana の Amazon Cognito 認証の設定

Kibana の Amazon Cognito 認証」を参照してください。

アクセス ポリシーの設定

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

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

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

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

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

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

  2. [分析] で、[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 ユーザーにアクセスを許可、または拒否する)] 1 つ以上の AWS アカウントあるいは IAM ユーザーまたはロールにアクセスを許可、または拒否します。
    [Allow access to the domain from specific IP(s) (特定の IP からのドメインへのアクセスを許可)]

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

    注記

    ドメインで VPC アクセスを有効にした場合、この事前定義のポリシーは利用できません。代わりに、どの IP アドレスがドメインにアクセスできるかを制御するセキュリティグループを使用できます。詳細については、「VPC ドメインのアクセスポリシーについて」を参照してください。

    [Deny access to the domain (ドメインへのアクセスを拒否する)] このポリシーでは、Amazon ES コンソールを通じたアクセス、またはドメインを作成した AWS アカウントの所有者によるアクセスのみ許可されます。
    [Copy access policy from another domain (別のドメインからアクセスポリシーをコピー)] このテンプレートは、他のドメインから既存のアクセスポリシーをインポートする際に役立ちます。
    [Allow open access to the domain (ドメインへのオープンアクセスを許可)]

    このポリシーは、パブリックエンドポイントのドメインには推奨されません。このポリシーは、ドメインのインデックスを誰もが削除、変更あるいはアクセスする許可を付与します。このポリシーは、テスト専用に用意されたものです。これらの設定を使用するドメインに、機密データをロードしないでください。

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

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

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

構文

--access-policies=<value>

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

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

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/*" } ] }'

ヒント

AWS CLI を使用してアクセスポリシーを設定する場合、複数のオンラインツールの 1 つを使用して JSON ポリシーステートメントを小さくできます。

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

AWS SDK では (Android および iOS SDK を除く)、UpdateElasticsearchDomainConfig--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. [分析] で、[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 に設定します。

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 リファレンス」で定義されたすべてのアクションがサポートされています。これには、--snapshots-optionsUpdateElasticsearchDomainConfig パラメータが含まれます。AWS SDK のインストールと使用の詳細については、「AWS Software Development Kits」を参照してください。

詳細オプションの設定

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

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

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

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

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

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

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

  4. [Configure cluster (クラスターの設定)] を選択します。

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

  6. 必要なオプションを指定して、[Submit (送信)] を選択します。

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

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

構文

--advanced-options rest.action.multi.allow_explicit_index=<true|false>, indices.fielddata.cache.size=<percentage_heap>, indices.query.bool.max_clause_count=<int>

パラメータ 有効な値
--advanced-options rest.action.multi.allow_explicit_index=<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 を除く)、UpdateElasticsearchDomainConfig--advanced-options パラメータも含めて、Amazon ES 設定 API リファレンスで定義されたすべてのアクションがサポートされています。AWS SDK のインストールと使用の詳細については、「AWS Software Development Kits」を参照してください。

ログの設定

Amazon ES は、Amazon CloudWatch Logs を使用して、3 種類の Elasticsearch ログ (エラーログ、検索スローログ、インデックススローログ) を公開します。これらのログは、パフォーマンスと安定性の問題のトラブルシューティングに役立ちますが、デフォルトでは無効になっています。有効にすると、標準の CloudWatch 料金が適用されます。

注記

エラーログは、バージョン 5.1 以降の Elasticsearch でのみ利用できます。スローログは、すべてのバージョンの Elasticsearch で利用できます。

ログについては、Elasticsearch は、Apache Log4j 2 とその組み込みログレベル (昇順) の TRACEDEBUGINFOWARNERRORFATAL を使用します。エラーログを有効にすると、Amazon ES によって、WARNERRORFATAL のログ行が CloudWatch に発行されます。重大度レベルの引き下げは、現時点ではサポートされていません。以下のように、エラーログは多くの状況でトラブルシューティングに役立ちます。

  • Painless スクリプトのコンパイルの問題

  • 無効なクエリ

  • スナップショットの失敗

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

CloudWatch へのログの発行を有効にするには、Amazon ES コンソールを使用する方法が最も簡単です。

CloudWatch へのログの発行を有効にするには (コンソール)

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

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

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

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

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

    注記

    複数のログを有効にする場合は、各ログを個別にロググループに発行することをお勧めします。分離することで、ログをスキャンしやすくなります。

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

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "cw_log_group_arn" } ] }

    重要

    CloudWatch Logs では、リージョンごとに 10 個のリソースポリシーがサポートされます。複数の Amazon ES ドメインでログを有効にする場合は、この制限に達しないように、複数のロググループを含む広範囲のポリシーを作成して再利用します。

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

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

スローログのいずれかを有効にしている場合は、「スローログの Elasticsearch ログしきい値の設定」を参照してください。エラーログのみ有効にしている場合は、追加のステップを行う必要はありません。

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

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

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

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

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

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

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"}]}'

重要

CloudWatch Logs では、リージョンごとに 10 個のリソースポリシーがサポートされます。複数の Amazon ES ドメインでスローログを有効にする場合は、複数のロググループが含まれている適用範囲のより広いポリシーを作成して再利用し、この制限に達しないようにします。

最後に、--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}
ES_APPLICATION_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}

注記

複数のログを有効にする場合は、各ログを個別にロググループに発行することをお勧めします。分離することで、ログをスキャンしやすくなります。

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

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 リファレンスに定義されているすべてのオペレーションをサポートします。これには、--log-publishing-optionsCreateElasticsearchDomainUpdateElasticsearchDomainConfig オプションも含まれます。

スローログのいずれかを有効にしている場合は、「スローログの Elasticsearch ログしきい値の設定」を参照してください。エラーログのみ有効にしている場合は、追加のステップを行う必要はありません。

スローログの Elasticsearch ログしきい値の設定

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

これらの設定は、Elasticsearch REST API を使用して指定します。

PUT elasticsearch_domain_endpoint/index/_settings { "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 ログしきい値が低くてリクエストが超過していないかどうか? インデックスのしきい値を確認するには、次のコマンドを使用します。

    GET 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、および -es-application-logs が使用されます。