[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】【AWS】非機能要件「ログの保持とアーカイブ」でCloudWatch LogsのS3エクスポートを担当したら、最も簡単だと思っていた方法が意外と面倒だった話 [Qiita_Trend] | Summary by TechDistill

> Source: Qiita_Trend
Execute Primary Source

// Problem

開発者がCloudWatch Logsの保持期間を短縮する際、既存ログの消失リスクとAPIの制約に直面した。単なる設定変更では、以下の問題が発生する可能性がある。


  • 保持期間の設定により、古いログが即座に削除対象となるリスク。
  • CreateExportTaskがアカウント・リージョン単位で同時実行1つに制限される制約。
  • Lambdaの15分制限と、非同期タスクの完了待ち時間の乖離。
  • S3ライフサイクルにおいて、128KB未満のオブジェクトが移行されない仕様。

// Approach

開発者は、チームの運用経験に基づき、LambdaとSQS FIFOを用いた非同期バッチ処理構成を採用した。以下のステップで実装を行っている。


  • EventBridge Schedulerで毎日、対象ロググループを抽出しSQSへ投入する。
  • SQS FIFOにより、ロググループ単位での直列実行とリトライを制御する。
  • Lambdaでタスクの状態を確認し、べき等性を担保した実装を行う。
  • Athenaのテーブル定義と保存済みクエリにより、検索基盤を整備する。

// Result

この設計により、ログの安全なアーカイブと、障害調査を容易にする検索環境を両立させた。具体的な成果は以下の通りである。


  • 退避完了後に保持期間を変更することで、過去ログの消失を完全に防いだ。
  • SQSのDLQとCloudWatch Alarmにより、長時間失敗の検知を自動化した。
  • Athenaによるパーティション設計により、大量のログに対する低コストな検索を実現した。

Senior Engineer Insight

> 実務上の落とし穴を網羅した、極めて実践的な内容だ。特に「作業順序」や「S3の最小サイズ制限」への言及は、設計の精度を高める上で不可欠な視点である。ただし、状態管理をLambdaで自前実装する手法は、コードの複雑化を招く。大規模なシステムであれば、Step Functionsを用いて状態遷移を宣言的に管理すべきだ。開発体験と運用コストのトレードオフを考慮した選択が求められる。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。