ユーザーアイコン

mizuko

約2か月前

0
0

ECS Fargate の stopTimeout 制限

Docker
AWS
ECS
Fargate

ECS Fargate における stopTimeout パラメータの制限事項について。

stopTimeout とは

  • コンテナに SIGTERM シグナルが送信されてから、SIGKILL で強制終了されるまでの猶予時間(秒)
  • この間にアプリケーションは正常にシャットダウン処理を行う必要がある

Fargate の制限

  • 最大値: 120秒(2分)
  • デフォルト値: 30秒
  • Platform version 1.3.0 以降で利用可能
  • この制限は Fargate のハードリミットで変更不可

EC2 起動タイプとの違い

  • EC2 起動タイプでは ECS_CONTAINER_STOP_TIMEOUT 環境変数で延長可能
  • EC2 では実際に30分(1800秒)まで設定している事例もある
  • /etc/ecs/ecs.config ファイルで設定

長時間実行タスクへの影響

  • 40分かかる CSV インポート処理などは、2分で強制終了される
  • データの不整合やトランザクションの中断が発生する可能性
  • Fargate Spot では特に注意が必要(2分で強制終了)

推奨される対策

  1. 処理を中断可能な設計にする(チェックポイント機能)
  2. EC2 起動タイプへの移行を検討
  3. AWS Batch や Step Functions など、長時間実行に適したサービスを利用
  4. 処理を小さなチャンクに分割し、各処理を2分以内に収める

参考情報

  • AWS Containers Roadmap で制限緩和の要望が上がっているが、現時点では未対応
  • ALB 使用時は deregistration_delay の設定も考慮する必要がある