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 コマンドを使用する場合は、特定のフィールドをバッククオートで囲んでクエリを正常に実行します。特殊文字 (アルファベットや数字でないもの) を含むフィールドにはバッククオートが必要です。例えば、
@message、Operation.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 について説明します。
-
OCSF GitHub リポジトリ
内の AWS ソースのスキーママッピングの例を確認する -
AWS ソースバージョン 2 (OCSF 1.1.0) の Security Lake クエリにアクセスして、Security Lake を効果的にクエリする方法について説明します。
-
パーティションを使用してクエリのパフォーマンスを向上させる:
accountid、region、およびtime_dt
-
-
Security Lake がクエリ用にサポートしている SQL 構文を使いこなす。詳細については、「サポートされている OpenSearch SQL コマンドと関数」を参照してください。