メインコンテンツに移動

AWS ソリューションライブラリ

Amazon OpenSearch Service を使用したリアルタイムテキスト検索のガイダンス

概要

このガイダンスにより、Amazon DynamoDB を Amazon OpenSearch Service と統合してリアルタイム検索を実現できます。ほとんどのアプリケーションは、Amazon DynamoDB と Amazon OpenSearch Service のゼロ ETL 統合を使用すべきです。ゼロ ETL 統合と整合しない要件を持つアプリケーションのために、このガイダンスは、並列関数を通じて DynamoDB から OpenSearch Service にデータの初期ロードを実行する方法と、新しいデータを OpenSearch Service にレプリケートする方法を示します。両方の場所にデータを保持することで、要件に最適なデータベースにクエリをターゲットできます。DynamoDB はパフォーマンスとスケーラビリティを必要とする固定アクセスパターンを強化し、OpenSearch Service は検索とフィルタリングの柔軟性を必要とするアクセスパターンを強化します。

仕組み

このアーキテクチャ図は、Amazon DynamoDB テーブルから Amazon OpenSearch Service にデータをロードしてストリーミングし、リアルタイムの自由形式の検索とフィルタリングをサポートする方法を示しています。

開始方法

このガイダンスをデプロイ

サンプルコード

サンプルコードを使用して、このガイダンスを AWS アカウントにデプロイしましょう

Well-Architected の柱

上記のアーキテクチャ図は、Well-Architected のベストプラクティスを念頭に置いて作成されたソリューションの例です。完全に Well-Architected であるためには、可能な限り多くの Well-Architected ベストプラクティスに従う必要があります。

AWS クラウド開発キット (AWS CDK) は、ソリューションのインフラストラクチャをコードとして定義し、一貫したデプロイを実現するのに役立ちます。Lambda は作業を小さな作業単位に分割し、それぞれが異なるアプリケーション機能を担当します。これらの単一タスク機能は、人為的エラーを減らし、失敗した場合に元に戻すのが容易である小規模な増分変更をサポートします。

オペレーショナルエクセレンスに関するホワイトペーパーを読む

該当する場合、本ガイダンスはパブリックではなくプライベート Amazon 仮想プライベートクラウド (Amazon VPC) ネットワークでサービスを開始します。Amazon VPC を介したプライベートネットワーキングは、データへのアクセス方法を制御できるようにすることで、すべてのレイヤーのセキュリティをサポートします。さらに、単一目的かつ最も権限のない AWS Identity and Access Management (IAM) ポリシーを使用することで、権限の変更が広範囲にわたる予期せぬ結果をもたらすのを防ぎ、ユーザーが機密データを誤って処理するリスクを軽減できます。AWS Secrets Manager は管理者シークレットを生成して安全に保存し、ユーザーが危険にさらされる可能性のあるコードや環境変数に認証情報を保存することを防ぎます。

セキュリティに関するホワイトペーパーを読む

Amazon SQS には、インポートの一部が失敗した場合に自動的に再試行するメカニズムが用意されており、障害からの迅速な回復に役立ちます。記録システムとして、 DynamoDB はポイントインタイムリカバリを使用して継続的なバックアップを行い、過去 35 日間の任意の秒単位へのリカバリを可能にします。OpenSearch Service では、初期データロード時に「作成」操作を行うことで、古いデータが新しいデータを上書きすることを防ぐことで、2 つのデータベース間のドリフトを防ぐことができます。OpenSearch Service は単一ノードクラスターを使用するように設定されていますが、これをマルチアベイラビリティーゾーンクラスターに変更して本番環境での可用性を維持できます。

信頼性に関するホワイトペーパーを読む

Lambda ではワークロードを並列化できます。 DynamoDB からの読み取りは、複数の Lambda 関数呼び出しに分割されたセグメント化された並列スキャンを経て行われます。この並列化により、単一のスレッドで管理できるよりもはるかに多くのスループットを実現できます。

パフォーマンス効率に関するホワイトペーパーを読む

Lambda は、個々の GetItem リクエストとしてではなく、バッチで DynamoDB 項目をまとめて読み取ります。その結果、このガイダンスで消費される読み取りキャパシティユニットは少なくなります。接続の初期化などのタスクにかかる作業量を減らすことで、バッチを使用すると計算時間と Lambda 呼び出しの数が減り、計算コストが削減されます。さらに、 OpenSearch Service のバッチ操作は効率的であり、コンピューティングリソースの全体的なコストを削減するのに役立ちます。

コスト最適化に関するホワイトペーパーを読む

Lambda は、データを OpenSearch Service に移動する必要がある場合にのみ関数を呼び出し、アイドル状態では実行されません。これは、コンピューティングリソースを最大限に活用するのに役立ちます。さらに、 DynamoDB はサーバーレスのマネージドサービスであるため、非効率な作業を減らし、ワークロードで消費される総電力を削減できます。

持続可能性に関するホワイトペーパーを読む

関連コンテンツ

ブログ

Amazon DynamoDB と Amazon OpenSearch Service のゼロ ETL 統合が利用可能に

このブログ記事には、Amazon DynamoDB と Amazon OpenSearch Service のゼロ ETL 統合の使用を開始する方法が記載されています。

ブログを読む

免責事項

サンプルコード、ソフトウェアライブラリ、コマンドラインツール、概念の実証、テンプレート、またはその他の関連技術 (私たちの担当者から提供される前述のものを含む) は、AWS カスタマーアグリーメント、またはお客様と AWS との間の関連文書契約 (いずれか該当する方) に基づき、AWS コンテンツとしてお客様に提供されるものです。お客様は、この AWS コンテンツを、お客様の本番アカウント、または本番データもしくはその他の重要なデータで使用すべきではありません。お客様は、サンプルコードなどの AWS コンテンツを、お客様固有の品質管理手法および基準に基づいて、本番グレードでの使用に適したテスト、セキュリティ確保、および最適化を行う責任を負います。AWS コンテンツのデプロイには、Amazon EC2 インスタンスの実行や Amazon S3 ストレージの使用など、AWS の課金対象リソースを作成または使用するための AWS 料金が発生する場合があります。

今日お探しの情報は見つかりましたか?

ぜひご意見をお寄せください。ページのコンテンツ品質の向上のために役立てさせていただきます