ECSのある環境を再起動したい
いろいろな理由で再起動したいことはあります。例えば
- SecretsManagerの変更したので再起動して反映したい
- docker-php環境を更新したので、再起動して最新のdockerイメージで起動し直したい
- 起動時のログを追いかけたいとき
などですね。
手順
1. タスク定義のリビジョンを上げる
- AWS管理画面にログイン
- 左上のサービス一覧から[ ECS ]を検索してクリック
- 左側メニューから[ タスク定義 ]を選択
- 目的の環境のタスク定義をクリック(env25など)
- 一番新しいリビジョン( 数字の大きいもの )をクリック
- [ 新しいリビジョンを作成 ]->[ 作成 ] ( この作成は失敗することがあります )
2. クラスター内の各サービスが参照するタスク定義のリビジョンを上げる
- ECS管理画面の左側のメニューから[ クラスター ]を選択
- [ dev-20181030-1 ]
- サービス名のカラムから再起動したいサービス名をクリック(env25など)
- 右上の方の[ 更新 ]をクリック
- [ リビジョン ]のプルダウンメニューをクリック
- 少しスライドして[ latest ]と書いてあるタスク定義を選択(1で作成したリビジョン番号を選択)
- [ 次のステップ ]->[ 次のステップ ]…->[ サービスの更新 ]
以上でECSコンテナの再起動が行われます
※ 再起動ですが、結構時間かかります… 細かく『いまどういう状態なのか?』を確認する場合ですが、 この再起動はブルーグリーン方式で、ダウンタイムが無いように再起動するようにしています。
どのような順番で行われるかというと、
- ECSの該当サービスで追加のタスク( タスクの中には nginx, php-fpm, volumeなどのコンテナが含まれます )が追加されます。
- タスクはロードバランサーの中のターゲットグループの中に追加されます( EC2 -> ロードバランサー -> ターゲットグループで該当のサービス名が書いてあるターゲットグループを探す )
- dockerコンテナはターゲットグループに追加され、ヘルスチェックに成功すると
新しいコンテナをheltyにし、アクセスを受け付け始め
、古いコンテナをdrainingします
上記の流れで『今、デプロイがどのような状態なのか?』を知ることができます