AWS
ECS
ECR
Fargate

AWS ECS/Fargate 操作覚え書き

バージニア北部+aws/dockerコマンド打てる環境にてECS/Fargate動作確認したメモ書き
ネーミングの一貫性の無さはご愛嬌w

ロードバランサ作成

*LB新規作成

-ロードバランサメニューから "NLB"(Network Load Balancer) を作成
名称は今回 ECSLB としました
-ターゲットグル―プの名称設定
ここでは AISITG 、ターゲットの種類=ip、port=80 とします

※"リスナー設定","ターゲットの登録" はこの時点では必要ではないですが
  ECSでクラスタ作成時にプルダウンで選択できるようになるので設定しておく事推奨

※コンテナサービスへのアクセスはロードバランサのDNS名でアクセスします(EIP不要)

ECS/Fargate 設定

  • タスク定義:レポジトリにpushしたdocker image を新規タスクに登録 (ECRでcontainar登録してなければ後述のECR設定を先に実行)

-Fargateを選択
ここではタスク名:MyTask とする
-コンテナ ecraisi:mynginx を追加
-ポートマッピングを tcp:80 として設定(地味に忘れがち)

IMG5.JPG

  • クラスター作成

-クラスターを "Networking Only"で作成
ここではクラスタ名:MyECS としています

IMG7.JPG

  • サービス作成

クラスタの"サービス"タブから作成
- FARGATEを選択
- タスク定義 : MyTask を選択
- サービス名: MyService
- タスクの数を設定 (サービスを削除するときにはタスク数=0にする事)
- VPC/Subnet/SGを選択
- ELBは当然NLB選択 > ECSLBを選択
- 対象コンテナをELBに追加
- リスナーポート port=80を選ぶとターゲットグループ名に"AISITG"が自動選択

IMG10.JPG

  • 確認

サービスの
”詳細”にロードバランスTG=AISITGとして設定
"タスク"にMyTaskが登録
されているのを確認

数分待ってるとターゲットAISITGに起動したコンテナの各IPが自動的に割り振られますので
http://NLBのFQDN でアクセスできたらできあがり!

ECRへのイメージ登録

  • レポジトリ作成

ここでは ecraisi として作成 : XXXXX.dkr.ecr.us-east-1.amazonaws.com/ecraisi
アクセス許可で対象のIAM への許可を追加しておくこと

docker login コマンドを取得

$ aws ecr get-login --no-include-email --region us-east-1

docker login -u AWS -p eyJwYXl....NDIzMTkxMn0= https://XXXXX.dkr.ecr.us-east-1.amazonaws.com

↑で入手したdocker login コマンドをコピペして実行

$ sudo docker login -u AWS -p eyJwYXl....NDIzMjM2Mn0= https://XXXXX.dkr.ecr.us-east-1.amazonaws.com

試しに docker.io/nginx をpush してみる

$ sudo docker image pull nginx

リポジトリecraisi にイメージをプッシュできるように、イメージにタグを付けます

$ sudo docker image tag docker.io/nginx XXXXX.dkr.ecr.us-east-1.amazonaws.com/ecraisi:mynginx

新しく作成した AWS リポジトリにこのイメージをプッシュ

$ sudo docker image push XXXXX.dkr.ecr.us-east-1.amazonaws.com/ecraisi:mynginx

ECSのリポジトリに登録されている事を確認しましょう

IMG3.JPG