AWS Fargate でタスクの終了直前付近のログが CloudWatch Logs に送られていません。なぜでしょうか?

2021.02.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

Fargate のコンテナのログを CloudWatch Logs に出力していますが、タスクの終了直前付近のログがありません。

どう対応すればいいの?

現在の Fargate における挙動として、タスクの終了時に終了直前付近のログが送られないという制約があります。
これに対する回避策としましては、下記の2点があります。

①タスクで使用するコンテナのライフサイクルを延長する

ログが CloudWatch Logs に転送完了した後にコンテナを終了し、タスクを終了させます。
タスク内の終了処理前に10秒から15秒程の sleep 処理を入れてください。

②EC2 起動タイプを利用する

EC2 起動タイプで上記の制約を回避できます。

参考資料