Amazon OpenSearch Service でダイレクトクエリを使用するための推奨事項 - Amazon OpenSearch Service

Amazon OpenSearch Service でダイレクトクエリを使用するための推奨事項

このページでは、Amazon OpenSearch Service ダイレクトクエリを使用して CloudWatch Logs、Amazon S3、Amazon Security Lake のデータを分析するための推奨事項を紹介します。これらのベストプラクティスは、データインジェストや重複を必要とせずに、パフォーマンスを最適化し、効率的なクエリの実行に役立ちます。

全般的な推奨事項

直接クエリを使用する場合は、以下を実行することをお勧めします。

  • 欠落している列を処理し、結果が返されるようにするには、COALESCE SQL 関数を使用します。

  • クエリの制限を使用して、データをあまり引き戻さないようにします。

  • 同じデータセットを複数回分析する場合は、インデックス付きビューを作成してデータを完全に取り込み、OpenSearch にそのデータをインデックス化し、分析が完了したら削除します。

  • アクセラレーションジョブとインデックスが不要になったら削除します。

  • フィールド名が同一であるが、大文字や小文字のみが異なる (field1 および FIELD1 など) クエリはサポートされていません。

    例として、以下のクエリはサポートされていません。

    Select AWSAccountId, AwsAccountId from LogGroup Select a.@LogStream, b.@logStream from Table A INNER Join Table B ona.id = b.id

    ただし、このフィールド名 (@logStream) は両方のロググループで同一であるため、次のクエリがサポートされています。

    Select a.@logStream, b.@logStream from Table A INNER Join Table B on a.id = b.id
  • 関数と式はフィールド名に対して操作し、FROM 句で指定されたロググループを持つ SELECT ステートメントの一部である必要があります。

    例として、次のクエリはサポートされていません。

    SELECT cos(10) FROM LogGroup

    次のクエリはサポートされています。

    SELECT cos(field1) FROM LogGroup

Amazon S3 の推奨事項

Amazon OpenSearch Service を使用して Amazon S3 のクエリデータを転送している場合は、以下もお勧めします。

  • 年、月、日、時間のパーティション形式を使用してデータを Amazon S3 に取り込み、クエリを高速化します。

  • スキップインデックスを構築するときは、高いカーディナリティを持つフィールドにはブルームフィルターを使用し、値の範囲が広いフィールドには最小/最大インデックスを使用します。カーディナリティの高いフィールドでは、値ベースのアプローチを使用してクエリ効率を向上させることを検討してください。

  • インデックスステート管理を使用して、マテリアライズドビューとカバリングインデックスのストレージを維持します。

CloudWatch Logs の推奨事項

Amazon OpenSearch Service を使用して CloudWatch Logs でデータをダイレクトクエリする場合は、以下もお勧めします。

  • 1 つのクエリで複数のロググループを検索する場合は、適切な構文を使用します。詳細については、「マルチロググループ関数」を参照してください。

  • SQL コマンドまたは PPL コマンドを使用する場合は、特定のフィールドをバッククオートで囲んでクエリを正常に実行します。特殊文字 (アルファベットや数字でないもの) を含むフィールドにはバッククオートが必要です。例えば、@messageOperation.Export,Test::Field をバッククオートで囲みます。列名がアルファベットのみの場合はバッククオートで囲む必要はありません。

    シンプルなフィールドを含むクエリの例:

    SELECT SessionToken, Operation, StartTime FROM `LogGroup-A` LIMIT 1000;

    バッククオートが付け足された類似のクエリ:

    SELECT `@SessionToken`, `@Operation`, `@StartTime` FROM `LogGroup-A` LIMIT 1000;

Security Lake の推奨事項

Amazon OpenSearch Service を使用して Security Lake でデータにダイレクトクエリを実行する場合は、以下もお勧めします。

  • Security Lake のステータスを確認し、問題なくスムーズに実行されていることを確認します。トラブルシューティングの詳細な手順については、「Amazon Security Lake ユーザーガイド」の「Troubleshooting Lake Formation issues」を参照してください。

  • クエリアクセスを確認します。

    • Security Lake の委任管理者アカウントとは異なるアカウントから Security Lake にクエリを実行する場合は、Security Lake でクエリアクセス権を持つサブスクライバーを設定します

    • 同じアカウントから Security Lake にクエリを実行する場合は、マネージド S3 バケットを LakeFormation に登録する必要がある旨のメッセージが Security Lake に表示されていないかを確認します。

  • クエリテンプレートと構築済みのダッシュボードを調べて、分析をすぐに開始します。

  • Open Cybersecurity Schema Framework (OCSF) と Security Lake について説明します。

  • Security Lake がクエリ用にサポートしている SQL 構文を使いこなす。詳細については、「サポートされている OpenSearch SQL コマンドと関数」を参照してください。