私の担当システムでECSを利用していますが、2025年6月末にECSのデフォルトロギング動作が変化されるというメールを受け取りました。
今回は、その変化点についてまとめてみました。
超簡潔に
【内容】
デフォルト設定の変更:従来の "blocking" モードから "non-blocking" モードに切り替わる
【目的】
ログの停止によるECSアプリケーションのダウンタイムを減らすことで、可用性向上
※"non-blocking" モードでは、ログバッファがいっぱいになるとログがドロップされるが、アプリケーションは継続動作
なぜこの変更が行われるのか
AWSとしては、何らかの理由(設定ミスやネットワーク接続の問題など)でロギングが失敗する場合にも、アプリケーションは実行され続けるべきだと考えているようです。そのため、"non-blocking" モードを推奨しています。
"blocking" モードを維持したい場合の対応
以下の2つの方法があります。
- アカウント設定の
defaultLogDriverMode
を"blocking"
に設定 - タスク定義の
LogConfiguration.mode
を"blocking"
に明示的に設定
※6月の変更前でも、"non-blocking" モードは使用可能です。
一応、AWSに確認したところ、"non-blocking" と "blocking" の仕様自体に変更はないとのことです。
まとめと注意点
アプリの可用性を重視するのは確かに重要ですが、一方で「アプリが正しく動作しているかどうかがログから確認できること」も非常に大切です。
また、ログの一部を参照してタスクの挙動を判断している仕組みがある場合、ログ欠損によって逆に可用性を下げてしまうリスクもあります。
変化点を踏まえつつ、適切なモードの選択を検討しましょう。
参考資料
[1] Amazon ECS アカウント設定
[2] 非ブロッキングモードによるログ損失防止の解説
[3] LogConfiguration APIリファレンス