CloudWatch Logsサブスクリプションフィルタ難易度 標準無料
セキュリティチームから、複数のEC2アプリケーションが出力するCloudWatch Logsのロググループについて、特定のエラーパターンを含むログイベントをほぼリアルタイムでAmazon OpenSearch Serviceに転送し、ダッシュボードで可視化したいという要望があった。追加のポーリングや定期バッチを組まずにこれを実現する設計として最も適切なものを選べ。(単一選択)
- A対象ロググループにサブスクリプションフィルタを作成し、エラーパターンに一致するログイベントの配信先としてKinesis Data Firehoseを指定する。Firehose側でAmazon OpenSearch Serviceへの配信を構成する
- B1時間ごとに
CreateExportTaskを実行してロググループの内容をS3へエクスポートし、そのオブジェクトをトリガーにLambdaでOpenSearch Serviceへ取り込む - CEC2上でcronジョブを組み、5分ごとにCloudWatch Logsの
FilterLogEventsAPIをポーリングしてエラーパターンを抽出し、OpenSearch Serviceへ手動で送信する - DCloudTrailで同じロググループの変更イベントを記録し、その証跡からエラーパターンを抽出してOpenSearch Serviceへ転送する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済
解説
CloudWatch Logsのサブスクリプションフィルタ(subscription filter)は、ロググループに新しいログイベントが到着するたびに、 指定パターンに一致するイベントをほぼリアルタイムでストリーミング配信する機能である。
- 配信先には Lambda・Kinesis Data Streams・Kinesis Data Firehose を指定できる。
- Amazon OpenSearch Serviceへ継続的に流し込みたい場合は、サブスクリプションフィルタの配信先をKinesis Data Firehoseに設定し、 Firehose側でOpenSearch Serviceへの配信先を構成するのが標準パターン(Firehoseがバッファリング・リトライ・変換を担う)。
- これに対し
CreateExportTaskによるS3エクスポートはポイントインタイムのバッチ処理であり、リアルタイム性が無い。
このため「エラーパターンをリアルタイムで下流サービスへ転送」という要件には、エクスポートタスクではなくサブスクリプションフィルタ+Firehoseの組み合わせが最適となる。
- Bエクスポートタスクはポイントインタイムのバッチ処理であり、最短でも数分〜のラグが生じる。「ほぼリアルタイム」という要件には合わない。
- Cポーリング方式は追加の運用実装・スケーリング負荷が発生し、リアルタイム性もサブスクリプションフィルタに劣る。今回避けたいとされる「追加のポーリング」そのもの。
- DCloudTrailはAWS APIの呼び出し履歴を記録するサービスであり、アプリケーションのログ内容(エラーメッセージ等)は記録しない。今回の要件とは無関係。
ひっかけ: 「CloudWatch LogsエクスポートタスクでS3へ出力し、そこからLambdaで随時取り込む(B)」は一見動きそうだが、
エクスポートタスクはバッチ処理でありリアルタイム性が無いため要件を満たさない。継続的なストリーミング=サブスクリプションフィルタという対応を覚える。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)