ECSサービス構築の二回目です。前回は,ECRに登録するdockerイメージをコンテナから作成するところまででした。今回は,ECRリポジトリーに登録,ECSサービスの構築手順です。
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/03/ECS1-1-1.png?resize=525%2C302&ssl=1)
1. ECRにリポジトリ作成
作成したコンテナイメージを、コンテナレジストリのフルマネージドサービスである Amazon Elastic Container Registry (Amazon ECR) にアップロード(Push)します。 作成したコンテナイメージを、コンテナレジストリで一元管理することで、様々なコンテナ実行環境で利用しやすくなるメリットがあります。AWS コンソールにログインして,ECRリポジトリを作成します。 引用url ECRとは
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS4-.png?resize=525%2C303&ssl=1)
このuriをコピーして,メモしておきます。後で、イメージのtag付けに必要になります。
1.2. EC2クライアントからECRにログインする
EC2クライアントから,ECRにpushする為に,ECRにログインする必要があります。ログイン用のスクリプトを作成します(login.sh)。そのスクリプトを利用してECRにログインします。 参照した URL AWS ECRにdockerイメージを登録する
aws ecr get-login --no-include-email --region ap-northeast-1 > login.sh ←一行です
[ec2-user@ip-10-128-1-19 ECR]$ bash ./login.sh
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/ec2-user/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded ← これが出ればログイン成功
前回作成したイメージから,ECR登録用のイメージtagを作成します。先ほど,コピーしておいた,uriが必要になります。 (123456789012はアカウントID)
docker tag redminesql:latest \
123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/redmine6:latest
ECRにイメージをpushします (123456789012はアカウントID)
docker push 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/redmine6:latest ← 一行です
これで,ECRのリポジトリにdockerイメージの登録が完了しました。 図AのECR Registoryです。
2. ECSサービスの構築
ECSサービスの構築は,ECSクラスターの作成,タスクの定義,サービスの作成という手順で行います。
2.1 ECSクラスターの作成
ECS クラスターは、コンテナを動かすための論理的なグループです。ECS を操作するために、まずは ECS クラスターを作成します。AWSコンソールから,クラスターの作成を行います。 ecs→クラスターの作成をクリックします。設定内容は,クラスター名,実行するVPC,サブネットです。 引用url ECSクラスターの作成
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS5-.png?resize=525%2C286&ssl=1)
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS6.png?resize=525%2C287&ssl=1)
2.2. タスク定義
タスク定義とは、アプリケーションを動かすために、どのようにコンテナを動かすか、コンテナの動作を定義したものです。 例えば、コンテナイメージの種類、アプリケーションが利用するポート、コンテナが利用するデータボリュームなどを指定できます。 コンテナを動かす際のブループリントとして機能します。タスク定義をawsコンソールから行います。設定内容は,タスク定義名,ECRのuri,コンテナのlistenポート番号,動作させるサーバ(今回はFargate)です。 引用 URL タスク定義
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS7.png?resize=525%2C306&ssl=1)
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS8.png?resize=525%2C299&ssl=1)
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS9.png?resize=525%2C285&ssl=1)
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS10.png?resize=525%2C285&ssl=1)
2.3. サービスの作成
サービスとは、ECS 上でコンテナを動かすときに利用する概念の一つです。 サービスを使用すると、 Amazon ECS クラスターで、指定した数のコンテナ群(タスク)を維持できます。作成するサービスの定義をします。設定内容は,タスク定義の選択,サービス名,実行するVPC,サブネット,セキュリティグループ,ALBです。 引用url サービスとは
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS12.png?resize=525%2C300&ssl=1)
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS13.png?resize=525%2C314&ssl=1)
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS14-1.png?resize=525%2C275&ssl=1)
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS15.png?resize=525%2C308&ssl=1)
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS16.png?resize=525%2C269&ssl=1)
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS17.png?resize=525%2C296&ssl=1)
3.サービスの実行
サービスの作成に成功したら,サービスを実行します。作成したサービスを選択する。ネットワーキングをクリック。オープンアドレス(ALBのアドレス)をクリックです。
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS18.png?resize=525%2C308&ssl=1)
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS19.png?resize=525%2C301&ssl=1)
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS20.png?resize=525%2C298&ssl=1)
![](https://i0.wp.com/opt-p.co.jp/blog/wp-content/uploads/2023/04/ECS21-1.png?resize=525%2C303&ssl=1)
ALB経由で,Fargateコンテナのredmineログイン画面が出れば作成完了です。