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

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

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

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

OpenSearch Service ドメインの作成

このセクションでは、OpenSearch Service コンソールを使用するか、create-domain コマンドで AWS CLI を使用して OpenSearch Service を作成する方法を説明します。

OpenSearch Service ドメインの作成 (コンソール)

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

OpenSearch Service ドメインを作成するには (コンソール)
  1. https://aws.amazon.com にアクセスし、[コンソールにサインイン] を選択します。

  2. [分析] の下で、[Amazon OpenSearch Service] を選択します。

  3. [ドメインの作成] を選択します。

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

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

    • 先頭が小文字

    • 3~28 文字

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

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

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

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

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

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

      重要

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

  7. バージョンでは、使用する OpenSearch またはレガシー Elasticsearch OSS のバージョンを選択します。最新バージョンの OpenSearch を選択することをお勧めします。詳細については、「サポートされているバージョンの OpenSearch および Elasticsearch」を参照してください。

    (オプション) ドメインに OpenSearch バージョンを選択した場合は、[互換モードを有効にする] を選択して OpenSearch のバージョンを 7.10 と報告します。これにより、接続する前にバージョンをチェックする特定の Elasticsearch OSS クライアントおよびプラグインが、サービスとの動作を続行できます。

  8. Auto-Tune では、速度と安定性を向上させるために、OpenSearch Service がドメインに対するメモリ関連の設定変更を提案できるようにするかどうかを選択します。詳細については、「Amazon OpenSearch Service の Auto-Tune」を参照してください。

    (オプション) [Add maintenance window] (メンテナンスウィンドウの追加) を選択すると、Auto-Tune がドメインを更新する定期的なウィンドウがスケジュールされます。

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

    注記

    OpenSearch Service コンソールは、ドメインの作成後に複数のアベイラビリティーゾーンから 1 つのアベイラビリティーゾーンへの移行をサポートしていません。2 つまたは 3 つのアベイラビリティーゾーンを選択し、後で 1 つのアベイラビリティーゾーンに移行する場合は、AWS CLI または設定 API を使用して ZoneAwarenessEnabled パラメータを無効化する必要がああります。

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

    注記

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

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

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

  12. [Storage type] (ストレージタイプ) で、インスタンスと関連付ける Amazon EBS またはインスタンスストアボリュームを選択します。一覧で利用できるボリュームタイプは、選択したインスタンスタイプに応じて異なります。特に大きなドメインを作成する際のガイダンスについては、「Amazon OpenSearch Service 用ペタバイトスケール」を参照してください。

  13. ストレージタイプとして EBS を選択した場合は、次の追加設定を設定します。選択したボリュームのタイプによっては、一部の設定が表示されない場合があります。

    設定 説明
    EBS ボリュームタイプ

    汎用 (SSD) - gp3 および 汎用 (SSD) - gp2、または前世代の プロビジョンド IOPS (SSD) および マグネティック (標準) から選択します。

    ノードあたりの EBS ストレージサイズ

    各データノードに接続する EBS ボリュームのサイズを入力します。

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

    プロビジョンド IOPS

    Provisioned IOPS SSD ボリュームタイプを選択した場合は、ボリュームがサポートできる I/O オペレーション/秒 (IOPS) を入力します。

  14. (オプション) gp3 ボリュームタイプを選択した場合は、[Advanced settings] (詳細設定) を展開し、各ノードにプロビジョニングするために、ストレージの料金に含まれるものを超えて、追加の IOPS (最大 1,000 MiB/秒) とスループット (最大 16,000) を指定します。これには追加料金がかかります。詳細については、「Amazon OpenSearch Service の料金」を参照してください。

  15. [専用マスターノード] のタイプと数を選択します。専用マスターノードは、クラスターの安定性を高めます。また、インスタンス数が 10 を超えるドメインに必要です。本番稼働用ドメインには、3 つの専用マスターノードをお勧めします。

    注記

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

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

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

  18. (オプション) OpenSearch または Elasticsearch 5.3 以降を実行しているドメインでは、[スナップショット設定] は無関係です。自動化されたスナップショットの詳細については、「Amazon OpenSearch Service でのインデックススナップショットの作成」を参照してください。

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

    設定 説明
    [VPC]

    使用する仮想プライベートクラウド (VPC) の ID を選択します。VPC とドメインが同じ AWS リージョン に存在している必要があり、テナントが [デフォルト] に設定されている VPC を選択する必要があります。OpenSearch Service は専有テナントを使用する VPC をまだサポートしていません。

    サブネット

    サブネットを選択します。マルチ AZ を有効にした場合、2 つまたは 3 つのサブネットを選択する必要があります。OpenSearch Service は VPC エンドポイントと Elastic Network Interface (ENI) をサブネットに配置します。

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

    セキュリティグループ

    必要なアプリケーションが、ドメインによって公開されているポート (80 または 443) およびプロトコル (HTTP または HTTP) で OpenSearch サービスドメインに到達できるようにする 1 つ以上の VPC セキュリティグループを選択します。詳細については、「VPC 内で Amazon OpenSearch Service ドメインを起動する」を参照してください。

    IAM ロール

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

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

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

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

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

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

    注記

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

  21. (オプション) OpenSearch Dashboards で SAML 認証を使用する場合は、[Prepare SAML authentication] (SAML 認証を準備する) を選択して、ドメインの SAML オプションを設定します。手順については、「OpenSearch Dashboards の SAML 認証」を参照してください。

  22. (オプション) OpenSearch Dashboards の Amazon Cognito 認証を使用する場合は、[Amazon Cognito 認証を有効にする] を選択します。次に、OpenSearch Dashboards の認証に使用する Amazon Cognito ユーザープールと ID プールを選択します。これらのリソースの作成のガイダンスについては、「OpenSearch Dashboards の Amazon Cognito 認証の設定」を参照してください。

  23. [ドメインアクセスポリシー] では、アクセスポリシーを選択するか、独自のポリシーを設定します。カスタムポリシーを作成することを選択した場合は、自分で設定することも、別のドメインからインポートすることもできます。詳細については、「Amazon OpenSearch Service での Identity and Access Management」を参照してください。

    注記

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

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

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

  26. (オプション) 保管中のデータの暗号化を有効にするには、[保管時のデータの暗号化を有効にする] を選択します。

    OpenSearch Service で AWS KMS 暗号化キーを生成する (または既に作成されているキーを使用する) 場合は、[Use AWS owned key] を選択します。それ以外の場合は、独自の KMS キーを選択します。詳細については、「Amazon OpenSearch Service の保管中のデータの暗号化」を参照してください。

  27. (オプション) ドメインを説明するタグを追加して、その情報を分類およびフィルタリングできるようにします。詳細については、「Amazon OpenSearch Service ドメインのタグ付け」を参照してください。

  28. (オプション) クラスターの 詳細設定 を展開して設定します。これらのオプションの概要については、「高度なクラスター設定」を参照してください。

  29. [Create] (作成) を選択します。

OpenSearch Service ドメインの作成 (AWS CLI)

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

コマンド例

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

  • OpenSearch バージョン 1.2 で、mylogs という名前の OpenSearch Service ドメインを作成します。

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

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

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

aws opensearch create-domain --domain-name mylogs --engine-version OpenSearch_1.2 --cluster-config InstanceType=r6g.large.search,InstanceCount=2 --ebs-options EBSEnabled=true,VolumeType=gp3,VolumeSize=100,Iops=3500,Throughput=125 --access-policies '{"Version": "2012-10-17", "Statement": [{"Action": "es:*", "Principal":"*","Effect": "Allow", "Condition": {"IpAddress":{"aws:SourceIp":["192.0.2.0/32"]}}}]}'

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

  • Elasticsearch バージョン 7.10 で、mylogs という名前の OpenSearch Service ドメインを作成します。

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

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

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

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

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

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

  • OpenSearch バージョン 1.0 で、mylogs という名前の OpenSearch Service ドメインを作成します。

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

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

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

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

aws opensearch create-domain --domain-name mylogs --engine-version OpenSearch_1.0 --cluster-config InstanceType=r6g.xlarge.search,InstanceCount=10,DedicatedMasterEnabled=true,DedicatedMasterType=r6g.large.search,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" } ] }'
注記

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

OpenSearch Service ドメインの作成 (AWSSDK)

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

OpenSearch Service ドメインの作成 (AWS CloudFormation)

OpenSearch Service は、リソースとインフラストラクチャの作成と管理の所要時間を短縮できるように AWS リソースをモデル化して設定するためのサービスである AWS CloudFormation と統合されています。作成する OpenSearch ドメインを説明するテンプレートを作成すれば、CloudFormation がユーザーに向けてドメインのプロビジョニングと設定を自動的に行います。OpenSearch ドメインの JSON テンプレートと YAML テンプレートの例を含む詳細については、AWS CloudFormation ユーザーガイドの「Amazon OpenSearch Service リソースタイプのリファレンス」を参照してください。

アクセスポリシーの設定

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

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

アクセスポリシーを設定するには (コンソール)
  1. https://aws.amazon.com にアクセスし、[コンソールにサインイン] を選択します。

  2. [分析] の下で、[Amazon OpenSearch Service] を選択します。

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

  4. [アクション] から [セキュリティ設定の編集] を選択します。

  5. アクセスポリシーの JSON を編集するか、事前設定済みのオプションをインポートします。

  6. [Save changes] (変更の保存) をクリックします。

高度なクラスター設定

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

リクエストボディのインデックス

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

フィールドデータのキャッシュ割り当て

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

注記

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

句の最大数

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