ECS デプロイが services-stable waiter タイムアウト (exit 255) で失敗する原因の切り分け
AWS
ECS
インフラ
CI/CD
aws ecs wait services-stable が Max attempts exceeded で打ち切られ exit code 255 で失敗する場合、ALB ヘルスチェックを通過できないサービスが1つでもあると全体が失敗する。切り分け手順:
aws ecs describe-servicesでdeployments数とpending数を確認。deployments=2 / pending=1のように新タスクが置き換わらず止まっているサービスを特定する。- 停止タスクの
stoppedReasonを確認。Task failed ELB health checksで、コンテナ exitCode が 137 (ECS による SIGKILL) なら、ヘルスチェック未通過による強制停止。 - ターゲットグループの設定 (healthy threshold, interval, grace period) を確認。例えば
healthy threshold 5 × interval 30s = 150秒の連続成功が必要なのに grace が 30秒だと、起動の遅いアプリは通過マージンが薄い。
根本原因は「起動が遅い割にヘルスチェック/waiter の猶予が狭い」構成にあることが多い。