翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 に取り込み、クエリを高速化します。
-
スキップインデックスを構築するときは、カーディナリティが高いフィールドには Bloom フィルターを使用し、値範囲が大きいフィールドには最小/最大インデックスを使用します。高カーディナリティフィールドでは、クエリ効率を向上させるために値ベースのアプローチを使用することを検討してください。
-
Index State Management を使用して、マテリアライズドビューとカバーインデックスのストレージを維持します。
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 ユーザーガイド」の「データレイクステータスのトラブルシューティング」を参照してください。
-
クエリアクセスを確認します。
-
Security Lake 委任管理者アカウントとは異なるアカウントから Security Lake にクエリを実行する場合は、Security Lake でクエリアクセス権を持つサブスクライバーを設定します。
-
同じアカウントから Security Lake にクエリを実行する場合は、LakeFormation へのマネージド S3 バケットの登録に関するメッセージが 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 コマンドと関数」を参照してください。