ECSのローリングアップデートが終わらなかった話
開発環境の作成のために実行タスクが1つのサービスをローリングアップデートする時にハマったポイントを書いておく。
デプロイのフローはCodePipelineを使用していて、
1. githubのpushを検知
2. CodeBuildでイメージをビルドしてECRにpush
3. ECSのサービスをローリングアップデート
といった流れで作っていたが、3.のローリングアップデートがいつまで経っても終わらないという現象にぶち当たった。
色々調査していく内に下記キャプチャの最小ヘルス率が原因という事が判明した。
例えば上記のキャプチャで例えると通常の実行時はタスクが2つ実行されていて、最小時でも50%(つまり一つ)実行するといった形になっている。
これが最初の設定では
タスクの数: 1
最小ヘルス率: 100
最大率: 200
となっていたため、タスクを手動で終了するなりさせない限りデプロイが始まらないといった状態になっていた。
この状態でデプロイさせるためには最小ヘルス率を0にする必要がある。
※一時的に実行タスクが0になるためサービスは停止する。
そもそもタスクの数を1つにすること自体が滅多にないとは思うけど、一応メモ程度に残しておく。