AWS ECSサービスを構築しよう(その2)

ECSサービス構築の二回目です。前回は,ECRに登録するdockerイメージをコンテナから作成するところまででした。今回は,ECRリポジトリーに登録,ECSサービスの構築手順です。
            図A 利用するAWSリソースと構成図

1. ECRにリポジトリ作成

作成したコンテナイメージを、コンテナレジストリのフルマネージドサービスである Amazon Elastic Container Registry (Amazon ECR) にアップロード(Push)します。
作成したコンテナイメージを、コンテナレジストリで一元管理することで、様々なコンテナ実行環境で利用しやすくなるメリットがあります。AWS コンソールにログインして,ECRリポジトリを作成します。
引用url ECRとは
               図B リポジトリ作成
この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クラスターの作成
            図C ECSクラスターの作成1
              図D ECSクラスターの作成2

2.2. タスク定義

タスク定義とは、アプリケーションを動かすために、どのようにコンテナを動かすか、コンテナの動作を定義したものです。 例えば、コンテナイメージの種類、アプリケーションが利用するポート、コンテナが利用するデータボリュームなどを指定できます。
コンテナを動かす際のブループリントとして機能します。タスク定義をawsコンソールから行います。設定内容は,タスク定義名,ECRのuri,コンテナのlistenポート番号,動作させるサーバ(今回はFargate)です。
引用 URL タスク定義
              図E タスク定義1
              図F タスク定義2
              図G タスク定義3
              図H タスク定義4

2.3. サービスの作成

サービスとは、ECS 上でコンテナを動かすときに利用する概念の一つです。
サービスを使用すると、 Amazon ECS クラスターで、指定した数のコンテナ群(タスク)を維持できます。作成するサービスの定義をします。設定内容は,タスク定義の選択,サービス名,実行するVPC,サブネット,セキュリティグループ,ALBです。
引用url サービスとは
              図I サービス作成1
              図J サービス作成2
              図K サービス作成3
              図L サービス作成4
              図M サービス作成5
                 図N サービス作成6

3.サービスの実行

サービスの作成に成功したら,サービスを実行します。作成したサービスを選択する。ネットワーキングをクリック。オープンアドレス(ALBのアドレス)をクリックです。
              図O サービスの実行1
              図P サービスの実行2
              図Q サービスの実行3
              図R サービスの実行4
ALB経由で,Fargateコンテナのredmineログイン画面が出れば作成完了です。