天将奔烈

日々の記録や学習内容を書いていきます

ECSのローリングアップデートが終わらなかった話

開発環境の作成のために実行タスクが1つのサービスをローリングアップデートする時にハマったポイントを書いておく。

 

デプロイのフローはCodePipelineを使用していて、

 

1. githubのpushを検知

 

2. CodeBuildでイメージをビルドしてECRにpush

 

3. ECSのサービスをローリングアップデート

 

といった流れで作っていたが、3.のローリングアップデートがいつまで経っても終わらないという現象にぶち当たった。

 

色々調査していく内に下記キャプチャの最小ヘルス率が原因という事が判明した。

f:id:gakouS:20210323001423p:plain

 

例えば上記のキャプチャで例えると通常の実行時はタスクが2つ実行されていて、最小時でも50%(つまり一つ)実行するといった形になっている。

 

これが最初の設定では

 

タスクの数: 1

最小ヘルス率: 100

最大率: 200

 

となっていたため、タスクを手動で終了するなりさせない限りデプロイが始まらないといった状態になっていた。

 

この状態でデプロイさせるためには最小ヘルス率を0にする必要がある。

※一時的に実行タスクが0になるためサービスは停止する。

 

そもそもタスクの数を1つにすること自体が滅多にないとは思うけど、一応メモ程度に残しておく。