背景・目的
OpenSearch Serverlessについて触れる機会があったので、特徴を整理します。
まとめ
下記に特徴を整理します
特徴 | 説明 |
---|---|
Open Search Serverlessとは | OpenSearch Service のオンデマンドの自動スケーリング設定 |
Serverless コレクション | アプリケーションのニーズに基づいてコンピューティング性能をスケーリングする OpenSearch クラスターを指す 手動で容量を管理する OpenSearch サービスプロビジョニング OpenSearch ドメイン とは対照的 |
効果的なワークロード | ・低頻度 ・断続的 ・予測不可能 |
コスト効率が高い | アプリケーションの使用状況に合わせてコンピューティング性能を自動的にスケーリングする |
ストレージ | OpenSearchサービスドメインで使用されるのと同様の大容量、分散型、高可用性のストレージボリュームがある |
暗号化 | 常に暗号化される |
Serverless のユースケース | ・ログ分析 ・全文検索 |
アーキテクチャ | 下記が分離されている ・Indexing(コンピューティング) ・Search(コンピューティング) ・S3(インデクスのプライマリーストレージ) |
OpenSearch Computing Unit(OCU) | 下記が含まれる ・6 GiBのメモリと対応するvCPU ・S3へのデータ転送 ・120 GiB分のエフェメラルストレージ |
使用するOCU | 最初のコレクションを作成すると、下記の2つのOCUをインスタンス化する ・Indexing ・Search デフォルトでは、冗長アクティブレプリカが有効になっており、別のAZにスタンバイノードがセットアップされる。このとき合計4 OCUを使用する コレクションの冗長性を有効にする設定を無効にするとことも可能 |
Serverlessのコレクションタイプ | ・Time series ・Search ・ベクトル検索 |
Time series | 下記の用途に適している ・運用 ・セキュリティ ・ユーザー行動、およびビジネスに関するマシン生成による大量の半構造化されたデータ リアルタイムで分析することに重点を置いたログ分析セグメント Hot+Coldストレージの組み合わせ(最新のデータはHotストレージに格納される) |
Search | 下記の用途に適している ・社内ネットワーク内のアプリケーション (コンテンツ管理システム、法的文書) ・e コマースウェブサイト検索やコンテンツ検索などのインターネット向けアプリケーションを強化する全文検索 すべてHotストレージに格納 |
ベクトル検索 | 下記の用途に適している ・ベクトルデータ管理 ・機械学習 (ML) によって拡張された検索エクスペリエンス ・チャットボット ・パーソナルアシスタント ・不正検出などの生成 AI アプリケーションを強化する ・ベクトル埋め込みのセマンティック検索 すべてHotストレージに格納 |
料金 | 下記に対して課金される ・インジェスト用のコンピューティング ・検索、クエリ用のコンピューティング ・ストレージ(S3) |
制限事項 | ・一部のOpenSearch APIはサポートされていない ・一部の OpenSearch プラグインはサポートされない ・OpenSearch サービスドメインからServerlessコレクションにデータを移行する方法はない。再度インデクスする必要がある ・コレクションへのクロスアカウントアクセスはできない ・カスタム OpenSearch プラグインはサポートされない ・OpenSearch Serverless コレクションのスナップショットを作成または復元できない ・クロスリージョン検索およびレプリケーションはサポートされない ・サーバレスリソースにはクォーターが設定されている ・ベクトル検索コレクション内のインデックスの更新間隔は約 60 秒 ・検索コレクションと時系列コレクションのインデックスの更新間隔は約 10 秒 ・シャードの数、間隔の数、および更新間隔は変更できず、 OpenSearch サーバーレスによって処理される ・2.1までのOpenSearchバージョンで利用可能な地理空間機能がサポートされる |
Serverlessのセキュリティ | 下記でセキュリティをコントロールする ・アクセスコントロール ・保管時の暗号化 ・セキュリティの設定および管理者 |
モニタリング | CloudWath、CloudTrail、EventBridgeと統合されている |
概要
下記を基に整理します。
Amazon OpenSearch Serverless は、Amazon OpenSearch Service のオンデマンドの自動スケーリング設定です。 OpenSearch サーバーレスコレクションは、アプリケーションのニーズに基づいてコンピューティング性能をスケーリングする OpenSearch クラスターです。これは、手動で容量を管理する OpenSearch サービスプロビジョニング OpenSearch ドメイン とは対照的です。
- Amazon OpenSearch Serverless (以降、Serverlessと呼ぶ)は、オンデマンドの自動スケーリング設定
- Serverless コレクションは、アプリケーションのニーズに基づいてコンピューティング性能をスケーリングする OpenSearch クラスターを指す
- 手動で容量を管理する OpenSearch サービスプロビジョニング OpenSearch ドメイン とは対照的
OpenSearch Serverless は、低頻度、断続的、または予測不可能なワークロードに対して、シンプルで費用対効果の高いオプションを提供します。このコスト効率が高いのは、アプリケーションの使用状況に合わせてコンピューティング性能を自動的にスケーリングするためです。
- Serverlessは、下記のワークロードに対してシンプルで費用対効果が高い
- 低頻度
- 断続的
- 予測不可能
- コスト効率が高い理由
- アプリケーションの使用状況に合わせてコンピューティング性能を自動的にスケーリングする
OpenSearch サーバーレスコレクションには、プロビジョニングされた OpenSearch サービスドメインで使用されるのと同じ種類の大容量、分散型、高可用性のストレージボリュームがあります。
- Serverless コレクション
- OpenSearchサービスドメインで使用されるのと同様の大容量、分散型、高可用性のストレージボリュームがある
OpenSearch サーバーレスコレクションは常に暗号化されます。暗号化キーは選択できますが、暗号化を無効にすることはできません。詳細については、「Amazon OpenSearch Serverless での暗号化」を参照してください。
- 常に暗号化される
Amazon OpenSearch Serverless とは
下記のドキュメントを基に特徴を整理します。
OpenSearch Serverless のユースケース
OpenSearch Serverless は、主に次の 2 つのユースケースをサポートしています。
- ログ分析 – ログ分析セグメントは、オペレーションインサイトとユーザーの行動に関するインサイトを得るために、マシン生成による大量の半構造化された時系列データを分析することに重点を置きます。
- 全文検索 – 全文検索セグメントが、社内ネットワーク内のアプリケーション (コンテンツ管理システム、法的文書) や、e コマースウェブサイトのコンテンツ検索などのインターネット向けアプリケーションを強化します。
- ログ分析
- 下記のインサイトを得るため、マシン生成による大量の半構造化された時系列データを分析する
- オペレーションインサイト
- ユーザの行動に関するインサイト
- 下記のインサイトを得るため、マシン生成による大量の半構造化された時系列データを分析する
- 全文検索
- 社内NWのアプリケーション
- コンテンツ管理システム
- 法的文章等
- eコマースウェブサイトのコンテンツ検索
- 社内NWのアプリケーション
仕組み
従来の OpenSearch クラスターには、インデックス作成オペレーションと検索オペレーションの両方を実行するインスタンスのセットが 1 つあり、インデックスストレージはコンピューティング性能と密接に結合されています。対照的に、 OpenSearch Serverless は、インデックス作成 (取り込み) コンポーネントと検索 (クエリ) コンポーネントを分離するクラウドネイティブアーキテクチャを使用します。Amazon S3 はインデックスのプライマリデータストレージです。
下記が分離されているアーキテクチャになっている
- Indexing(コンピューティング)
- Search(コンピューティング)
- S3(インデクスのプライマリーストレージ)
OpenSearch データインジェスト、検索、クエリのサーバーレスコンピューティング容量は、コンピューティングユニット (OCU) OpenSearch で測定されます。 OCUs 各 OCU は、6 GiB のメモリと対応する仮想 CPU (vCPU)、および Amazon S3 へのデータ転送を組み合わせたものです。各 OCU には、120 GiB のインデックスデータを保存するのに十分なホットエフェメラルストレージが含まれています。
- OpenSearch Computing Unit(OCU)
- 6 GiBのメモリと対応するvCPU
- S3へのデータ転送
- 120 GiB分のエフェメラルストレージ
最初のコレクションを作成すると、 OpenSearch Serverless は 2 つの OCUs をインスタンス化します。1 つはインデックス作成用、もう 1 つは検索用です。高可用性を確保するために、他のアベイラビリティーゾーンでスタンバイノードのセットも起動します。開発およびテストの目的で、コレクションの冗長性を有効にする設定を無効にすることができます。これにより、2 つのスタンバイレプリカがなくなり、2 つの OCUs。デフォルトでは、冗長アクティブレプリカが有効になっています。これは、アカウントの最初のコレクションのために合計で 4 つの OCU がインスタンス化されることを意味します。
- 最初のコレクションを作成すると、下記の2つのOCUをインスタンス化する
- Indexing
- Search
- 高可用性を確保するために、他のAZでスタンバイノードのセットを起動する
- デフォルトでは有効化されている
- この場合、4つのOCUがインスタンス化される
- 開発やテストの目的の場合は、コレクションの冗長性を有効にする設定を無効にできる
- 2つのスタンバイレプリカがなくなる
これらの OCU は、すべてのコレクションエンドポイントにアクティビティがない場合でも存在します。後続のすべてのコレクションは、これらの OCU を共有します。同じアカウントで追加のコレクションを作成すると、 OpenSearch Serverless は、指定した容量制限に従って、コレクションをサポートするために必要な場合にのみ検索および取り込み用の OCUs を追加します。コンピューティング使用量が減少すると、容量はスケールダウンします。
- すべてのコレクションエンドポイントにアクティビティがない場合でも存在する
- スケールアウト/スケールインがされる
コレクションタイプを選択する
OpenSearch サーバーレスは、次の 3 つの主要なコレクションタイプをサポートしています。
[Time series] (時系列) – 運用、セキュリティ、ユーザー行動、およびビジネスに関するインサイトを得るために、マシン生成による大量の半構造化されたデータをリアルタイムで分析することに重点を置いたログ分析セグメント。
[Search] (検索) – 社内ネットワーク内のアプリケーション (コンテンツ管理システム、法的文書) や、e コマースウェブサイト検索やコンテンツ検索などのインターネット向けアプリケーションを強化する全文検索。
[ベクトル検索] – ベクトルデータ管理を簡素化し、機械学習 (ML) によって拡張された検索エクスペリエンスと、チャットボット、パーソナルアシスタント、不正検出などの生成 AI アプリケーションを強化する、ベクトル埋め込みのセマンティック検索。
コレクションを初めて作成するときに、コレクションタイプを選択します。
- 3つの主要なコレクションタイプをサポートしている
- Time series
- 下記のインサイトを得る
- 運用
- セキュリティ
- ユーザー行動、およびビジネスに関するマシン生成による大量の半構造化されたデータ
- リアルタイムで分析することに重点を置いたログ分析セグメント
- 下記のインサイトを得る
- Search
- 下記の用途に適している
- 社内ネットワーク内のアプリケーション (コンテンツ管理システム、法的文書)
- e コマースウェブサイト検索やコンテンツ検索などのインターネット向けアプリケーションを強化する全文検索
- 下記の用途に適している
- ベクトル検索
- ベクトルデータ管理を簡素化
- 機械学習 (ML) によって拡張された検索エクスペリエンス
- チャットボット
- パーソナルアシスタント
- 不正検出などの生成 AI アプリケーションを強化する
- ベクトル埋め込みのセマンティック検索
- Time series
選択するコレクションタイプは、コレクションに取り込む予定のデータの種類と、そのデータへのクエリ実行方法によって異なります。コレクションの作成後にコレクションタイプを変更することはできません。
下記により選択するコレクションタイプは異なる
-
データの種類
-
クエリ実行方法
-
一度作成後、コレクションタイプは変更できない
コレクションタイプには、次の大きな違いがあります。
- 検索およびベクトル検索コレクションでは、迅速なクエリ応答時間を確保するために、すべてのデータがホットストレージに保存されます。時系列コレクションでは、ホットストレージとウォームストレージを組み合わせて使用します。この場合、より頻繁にアクセスされるデータのクエリ応答時間を最適化するために、最新のデータがホットストレージに保存されます。
- 検索とベクトル検索コレクションでは、すべてのデータがホットストレージに保存される
- 時系列コレクションでは、ホットストレージとウォームストレージを組み合わせる
- 最新がホットストレージに保存される
- 時系列およびベクトル検索コレクションの場合、カスタムドキュメント ID によるインデックス付けや、UPSERT リクエストによる更新はできません。この操作は検索のユースケース専用です。代わりにドキュメント ID を使用して更新できます。詳細については、「サポートされている OpenSearch API オペレーションとアクセス許可」を参照してください。
- 時系列とベクトル検索コレクションは、カスタムドキュメントIDによるインデクス付け、UPSERTリクエストによる更新できない
- 検索ユースケース専用
- ドキュメントIDを使用して更新できる
- 検索および時系列コレクションの場合、k-NN タイプのインデックスは使用できません。
- 検索、時系列コレクションの場合、k-NNタイプのインデクスは使用できない
コレクションタイプの特徴の違い
特徴 | 時系列 | 検索 | ベクトル検索 |
---|---|---|---|
ストレージ | Hot Cold 最新はHotに格納 |
Hot | Hot |
制限事項 | カスタムドキュメントIDによるインデクス付け、UPSERTによる更新ができない (ドキュメントIDを使用して更新可能) k-NNタイプのインデクスは使用不可 |
k-NNタイプのインデクスは使用不可 | カスタムドキュメントIDによるインデクス付け、UPSERTによる更新ができない (ドキュメントIDを使用して更新可能) |
OpenSearch Serverless の料金
OpenSearch Serverless では、以下のコンポーネントに対して課金されます。
- データインジェスト用コンピューティング
- 検索およびクエリ用コンピューティング
- ストレージは Amazon S3 に保持されます
下記に対して課金される
- インジェスト用のコンピューティング
- 検索、クエリ用のコンピューティング
- ストレージ(S3)
OCU は 1 時間ごとに、秒単位の粒度で課金されます。アカウントのステートメントには、データインジェスト用のラベルと検索用のラベルが付いた OCU 時間単位のコンピューティングに関するエントリがあります。また、Amazon S3 に保存されているデータに対しても月単位で請求されます。 OpenSearch Dashboards の使用に対して課金されることはありません。
- OCUは、1H毎に秒単位で課金
- S3は月単位
- OpenSearch Dashboardsは課金されない
2024/9/29現在の東京リージョンの単価は下記のとおりです。
- インデクス作成:USD 0.334 / H
- 検索とクエリ:USD 0.334 / H
- ストレージ:USD 0.226 / GB / M
コレクションを作成し、冗長アクティブレプリカを有効にすると、取り込みに 2 OCUs [0.5 OCU x 2]、検索に 1 OCU [0.5 OCU x 2] 以上の料金が請求されます。冗長アクティブレプリカを無効にすると、アカウント内の最初のコレクションに対して最低 1 OCU [0.5 OCU x 2] の料金が請求されます。後続のすべてのコレクションは、これらの OCU を共有できます。
- 冗長アクティブレプリカを有効にした場合
- 取り込み:2 OCU (0.5 OCU * 2)
- 検索:1 OCU(0.5 OCU *2)
OpenSearch Serverless はOCUsコレクションをサポートするために必要なコンピューティング能力とストレージに基づいて、1 OCU 単位で OCU を追加します。コストを抑えるために、アカウントの OCU の最大数を設定できます。
- 1 OCU単位にコンピューティング能力とストレージ能力を設定できる
- 最大数を設定できる
制限事項
OpenSearch Serverless には以下の制限があります。
- 一部の OpenSearch API オペレーションはサポートされていません。サポートされている OpenSearch API オペレーションとアクセス許可 を参照してください。
- 一部のOpenSearch APIはサポートされていない
- 一部の OpenSearch プラグインはサポートされていません。サポートされている OpenSearch プラグイン を参照してください。
- 一部の OpenSearch プラグインはサポートされない
- 現在、マネージド OpenSearch サービスドメインからサーバーレスコレクションにデータを自動的に移行する方法はありません。ドメインからコレクションにデータを再インデックスする必要があります。
- OpenSearch サービスドメインからServerlessコレクションにデータを移行する方法はない
- 再度インデクスする必要がある
- コレクションへのクロスアカウントアクセスはサポートされていません。他のアカウントからのコレクションを暗号化またはデータアクセスポリシーに含めることはできません。
- コレクションへのクロスアカウントアクセスはできない
- カスタム OpenSearch プラグインはサポートされていません。
- カスタム OpenSearch プラグインはサポートされない
- OpenSearch Serverless コレクションのスナップショットを作成または復元することはできません。
- OpenSearch Serverless コレクションのスナップショットを作成または復元できない
- クロスリージョン検索およびレプリケーションはサポートされていません。
- クロスリージョン検索およびレプリケーションはサポートされない
- 1 つのアカウントおよびリージョンで使用できるサーバーレスリソースの数には制限があります。OpenSearch 「サーバーレスクォータ」を参照してください。
- サーバレスリソースにはクォーターが設定されている
- ベクトル検索コレクション内のインデックスの更新間隔は約 60 秒です。検索コレクションと時系列コレクションのインデックスの更新間隔は約 10 秒です。
- ベクトル検索コレクション内のインデックスの更新間隔は約 60 秒
- 検索コレクションと時系列コレクションのインデックスの更新間隔は約 10 秒
- シャードの数、間隔の数、および更新間隔は変更できず、 OpenSearch サーバーレスによって処理されます。シャーディング戦略はコレクションタイプとトラフィックに基づいています。例えば、時系列コレクションでは、書き込みトラフィックのボトルネックに基づいてプライマリシャードをスケーリングします。
- シャードの数、間隔の数、および更新間隔は変更できず、 OpenSearch サーバーレスによって処理される
- シャーディング戦略はコレクションタイプとトラフィックに基づく
- 例)時系列コレクションでは、書き込みトラフィックのボトルネックに基づいてプライマリシャードをスケーリングする
- 2.1 までの OpenSearch バージョンで利用可能な地理空間機能がサポートされています。
- 2.1までのOpenSearchバージョンで利用可能な地理空間機能がサポートされる
Amazon OpenSearch サーバーレスのセキュリティの概要
下記を基に整理します。
- アクセスコントロール
- データアクセスポリシーで制御
- OpenSearchは、fine-grained access controlとIAMポリシー
- 保管時の暗号化
- コレクションには保管時の暗号化が必須
- OpenSearchは、オプション
- セキュリティの設定および管理者
- セキュリティポリシーを使用して、複数のコレクションのセキュリティ設定を管理できる
- OpenSearchは、ネットワーク、暗号化、およびデータアクセスは、ドメインごとに個別に設定する必要がある
ネットワークポリシー
ネットワークポリシーは、コレクションにプライベートにアクセスできるようにするか、パブリックネットワークからインターネット経由でアクセスするかを定義します。プライベートコレクションには、 OpenSearch サーバーレスで管理される VPC エンドポイントから、または Amazon Bedrock AWS のサービス などの特定のエンドポイントからプライベートアクセスを使用してアクセスできます。AWS のサービス ネットワークポリシーは、暗号化ポリシーと同様に複数のコレクションに適用できるため、多数のコレクションのネットワークアクセスを大規模に管理できます。
ネットワークポリシーは、アクセスタイプとリソースタイプの 2 つの要素で構成されます。アクセスタイプはパブリックでもプライベートでもかまいません。リソースタイプによって、選択したアクセスがコレクションエンドポイント、 OpenSearch ダッシュボードエンドポイント、またはその両方に適用されるかが決まります。
- VPCとPublicがある
ネットワークポリシー内で VPC アクセスを設定する場合は、まず、OpenSearch サーバーレスで管理される VPC エンドポイントを 1 つ以上作成する必要があります。これらのエンドポイントを使用すると、インターネットゲートウェイ、NAT デバイス、VPN 接続、または接続を使用せずに、VPC OpenSearch 内にあるかのようにサーバーレスにアクセスできます。 AWS Direct Connect
AWS のサービス OpenSearch へのプライベートアクセスはコレクションのエンドポイントにのみ適用でき、Dashboards エンドポイントには適用されません。 OpenSearch AWS のサービス OpenSearch ダッシュボードへのアクセスは許可されません。
- VPCeを1つ以上作成する必要がある
Amazon OpenSearch Serverless のモニタリング
下記を基に整理します。
モニタリングは、Amazon OpenSearch Serverless およびその他の AWS ソリューションの信頼性、可用性、パフォーマンスを維持する上で重要な部分です。 は、 OpenSearch サーバーレスを監視したり、問題が発生したときに報告したり、必要に応じて自動アクションを実行したりするために、以下のモニタリングツール AWS を提供しています。
- Amazon CloudWatch は、 AWS リソースと、 AWS で実行しているアプリケーションをリアルタイムでモニタリングします。メトリクスを収集および追跡し、カスタマイズされたダッシュボードを作成し、指定されたメトリックが指定したしきい値に達したときに通知またはアクションを実行するアラームを設定できます。
例えば、 で Amazon EC2 インスタンスの CPU 使用率やその他のメトリクス CloudWatch を追跡し、必要に応じて新しいインスタンスを自動的に起動できます。詳細については、「Amazon CloudWatch ユーザーガイド」を参照してください。
- AWS CloudTrail は、 AWS アカウントによって行われた、またはそのアカウントに代わって実行された API コールと関連イベントをキャプチャします。このツールでは、ユーザーが指定した Amazon S3 バケットにログファイルを配信します。を呼び出したユーザーとアカウント AWS、呼び出し元のソース IP アドレス、および呼び出し日時を特定できます。詳細については、『AWS CloudTrail ユーザーガイド』を参照してください。
- Amazon EventBridge は、 OpenSearch サービスドメインの変更を示すシステムイベントのストリームをほぼリアルタイムで配信します。特定のイベントを監視し、これらのイベントが発生した AWS のサービス ときに他の で自動アクションをトリガーするルールを作成できます。詳細については、「Amazon ユーザーガイド EventBridge 」を参照してください。
モニタリングは、下記が利用できる
- CloudWatch
- CloudTrail
- EventBridge
Amazon による OpenSearch Serverless のモニタリング CloudWatch
下記を基に整理します。
メトリクス | 説明 |
---|---|
ActiveCollection | コレクションが有効化されているか 1のときはACTIVE 関連する統計情報:MAX |
DeletedDocuments | 削除されたドキュメントの総数 関連する統計情報:Average、Sum |
IndexingOCU | 取り込みに使用されるOCU Sum |
IngestionDataRate | コレクションまたはインデックスに対するインデックス化レート(GiB/秒) 関連する統計情報:Sum |
IngestionDocumentErrors | コレクションまたはインデックスに対する取り込み中に発生した、ドキュメントエラーの総数 関連する統計情報:Sum |
IngestionDocumentRate | コレクションまたはインデックスへの、ドキュメントの取り込みにおける 1 秒あたりのレート 関連する統計情報:Sum |
IngestionRequestErrors | コレクションに対する一括インデックス作成リクエストエラーの合計数 関連する統計情報:Sum |
IngestionRequestLatency | コレクションへの一括書き込みオペレーションにおけるレイテンシー 関連する統計情報: Minimum、Maximum、Average |
IngestionRequestRate | コレクションが受信した、一括書き込みオペレーションの総数。 関連する統計情報: Minimum、Maximum、Average |
IngestionRequestSuccess | コレクションに対して成功した、インデックス作成オペレーションの総数。 関連する統計情報: Sum |
SearchableDocuments | コレクションまたはインデックス内にある、検索可能なドキュメントの合計数。 関連する統計情報: Sum |
SearchRequestErrors | コレクションに対し発生したクエリエラーの、1 分あたりの総数。 関連する統計情報: Sum |
SearchRequestLatency | コレクションに対し、検索オペレーションを完了するために必要な平均時間 (ミリ秒) 関連する統計情報: Minimum、Maximum、Average |
SearchOCU | コレクションデータの検索に使用される OUC 関連する統計情報: Sum |
SearchRequestRate | コレクションに対する検索リクエストの、1 分あたりの総数。 関連する統計情報: Average、Maximum、Sum |
StorageUsedInS3 | 使用された Amazon S3 ストレージのバイト単位の量。 関連する統計情報: Sum |
考察
今回、OpenSearch Serverlessについて基本的な知識を整理しました。
次回以降は、実際に手を動かして触ってみます。
参考