【AWS】更新後のDockerコンテナを手動でデプロイする手順|ECRとECSの操作方法

aws-prograshi(プロぐらし)-kv AWS
記事内に広告が含まれていることがあります。

AWSでECRのレポジトリにあるイメージからECSでコンテナを起動しているアプリケーションで、イメージを更新した場合の対処法について。

CodePipelineで自動化もできるが、ここでは手動で更新する手順について。


イメージを更新しECRにプッシュ

ローカルのプロジェクトを更新したら、イメージを作成してECRにプッシュする。

docker-compose build
 ↓
AWS ECRにログイン

aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 111111111111.dkr.ecr.ap-northeast-1.amazonaws.com

 ↓
doker tag <対象のイメージ名:タグ名> <変更後のイメージ名:タグ名>
※イメージ名はECRのレジストリIDとエンドポイント


 ↓
docker push <対象のイメージ名:タグ名>


ECRレポジトリを確認

イメージが正しくプッシュされているか確認する。


ECSのタスク定義の更新

既存のタスク定義を選択し、新しいリビジョンを作成する。


既存のコンテナをクリックし、コンテナの編集に入り、イメージの場所を新しいイメージのものに変更する。

↓ 更新

↓ 新しいタスクのリビジョンが作成されたか確認

リビジョンの番号が+1されたタスクができていれば更新は完了。



▼注意点
イメージ名とタグ名に変更がない場合でも、このタスク定義の更新を実施すること。更新しないと、古いイメージを参照してしまう。


ECSのサービスを更新

更新するのは、先ほど作成した新しいタスク定義のリビジョンのみ。

▼手順
ECSで対象のクラスターの中の対象のサービスを選択
 ↓

右上の「更新」をクリック


 ↓ 最新のリビジョンを選択

タスク定義で作成した最新のリビジョンを選択する

 ↓ 次のステップ x 4

 ↓ サービスの更新

 ↓ 確認

クラスターのタスクタブから、指定したタスク定義のリビジョンでステータスがRUNNINGになっているか確認。

デプロイまでに時間がかかるため、新しいサービスがPENDINGになっている場合もある。


(参考)Blue/Greenデプロイの場合の流れ

新しいプロジェクトを起動中
・旧: RUNNING
・新: PENDING

 ↓

新しいプロジェクト起動完了。安定するまでの1時間はこの状態を維持
・旧: RUNNING
・新: RUNNING

 ↓

完全に切り替わり
・新: RUNNING


タイトルとURLをコピーしました