監査ログは「誰が、いつ、何をしたか」を説明するための証跡です。APIの応答を遅くせず、長期保存と検索可能性を両立する責務分割を捉えます。
監査担当者が後日、ひとつの操作を再現できる情報を定義する。

たとえばユーザー削除なら、実行者IDだけでなく、削除対象ID・操作時刻・送信元IP・環境まで同じJSONに含める。
リクエストボディには機密情報が含まれ得る。監査に必要な項目だけを選び、秘密値をそのまま保存しない。
ユーザー向け処理と、証跡の配送処理を別の時間軸に置く。

APIはJSONログを出して応答し、subscription filterがaudit_logだけをFirehoseへ渡す。配送の再試行はFirehose側が受け持つ。
S3やDBへの直接書き込みをmiddlewareに入れると、保存先の遅延や障害が全APIへ波及する。
長期保管、読み方、問い合わせを別サービスへ分ける。

監査担当者が期間とuser_idで絞ると、AthenaはCatalogの列定義を使い、S3上のParquetを走査する。
Catalogにログ本体は入らない。S3の削除・移動やスキーマ変更は、そのままクエリ失敗や誤読につながる。