
はじめに
こんにちは、株式会社エーピーコミュニケーションズの西村です。
今回はNLB→ALB→ECS構成の作成手順を紹介します。
本来この構成はNLBで固定IPアドレスを用いたドメインの紐づけやALBのリスナールールを使った通信の振り分けが利点としてありますが今回は構成の作成方法のみの学習のため省略します。
目次
構成図

前提条件
- VPC ×1
- アベイラビリティゾーン ×1
- パブリックサブネット ×2
手順
1.セキュリティグループの作成
1-1.NLB用のセキュリティグループを作成する。
基本的な詳細には以下の値を入力する。
- セキュリティグループ名:
NLB-sg - 説明:
Security Group for NLB - VPC:
事前に作成したVPCを選択する

インバウンドルールには以下の値を入力してセキュリティグループを作成をクリックする。
※インバウンドルール入力後にアウトバウンドルールは自動で作成される。
- タイプ:
すべてのTCP - ソース:
Anywhere-IPv4
1-2.ALB用のセキュリティグループを作成する。
基本的な詳細には以下の値を入力する。
- セキュリティグループ名:
ALB-sg - 説明:
Security Group for ALB - VPC:
事前に作成したVPCを選択する

インバウンドルールには以下の値を入力してセキュリティグループを作成をクリックする。
※インバウンドルール入力後にアウトバウンドルールは自動で作成される。
- タイプ:
HTTP - ソース:
カスタムNLB-sg
1-3.ECS用のセキュリティグループを作成する。
基本的な詳細には以下の値を入力する。
- セキュリティグループ名:
ECS-sg - 説明:
Security Group for ECS - VPC:
事前に作成したVPCを選択する

インバウンドルールには以下の値を入力してセキュリティグループを作成をクリックする。
※インバウンドルール入力後にアウトバウンドルールは自動で作成される。
- タイプ:
HTTP - ソース:
カスタムALB-sg

2.ECSの作成
2-1.クラスターを作成する。
クラスターの作成には以下の値を入力しする。
- クラスター名:
Test-cluster

インフラストラクチャには以下の値を選択し作成 をクリックする。
- コンピューティングキャパシティの取得方法を選択:
Fargateのみ
2-2.タスク定義を作成する。
タスク定義の設定には以下の値を入力する。
- タスク定義ファミリー:
Test-task-definition

インフラストラクチャの要件には以下の値を選択する。
- 起動タイプ:
AWS Fargate
※他の設定はデフォルトのままとします。

コンテナの詳細には以下の値を入力し作成をクリックする。
- 名前:
Test-container - イメージURI:
amazon/amazon-ecs-sample※コンテナのイメージURIにはAWSが用意したコンテナイメージのサンプルを指定します。
2-3.サービスを作成する。
サービスの詳細には以下の値を入力する。
- タスク定義ファミリー:
Test-task-definition - サービス名:
Test-task-definition-service

環境には以下の値を選択する。
- コンピューティングオプションー:
キャパシティプロバイダー戦略※ここは起動タイプでも問題ありません。

デプロイには以下の値を選択する。
- スケジューリング戦略:
レプリカ

ネットワーキングには以下の値を選択する。
- VPC:
事前に作成したVPC - サブネット:
事前に作成したパブリックサブネット - セキュリティグループ名:
ECS-sg

2-4.作成されたタスクの確認
Amazon Elastic Container Service > クラスター > Test-cluster > タスク > 作成されたタスクをクリックしプライベートIPを確認する。
3.ターゲットグループとロードバランサーの作成
※設定の都合上ターゲットグループ→LBの作成を交互に行います。
3-1.ECSへ向けたターゲットグループを作成する。
設定には以下の値を入力する。
- ターゲットの種類:
IPアドレス - ターゲットグループ名:
Target-ECS - プロトコル
HTTP - ポート:
80 - IPアドレスタイプ:
IPv4 - VPC:
事前に作成したVPC - プロトコルバージョン:
HTTP1

IPアドレスには以下の値を入力する。
- ネットワーク:
事前に作成したVPC - VPCサブネットからのIPv4アドレスを入力します。:
2-4で確認したプライベートIP

設定を確認しターゲットグループの作成をクリックする。
3-2.ALBを作成する。
基本的な設定には以下の値を入力する。
- ロードバランサー名:
Test-alb - スキーム:
インターネット向け - ロードバランサーのIPアドレスタイプ:
IPv4
ネットワーキングマッピングには以下の値を入力する。
- VPC:
事前に作成したVPC - アベイラビリティゾーンとサブネット:
事前に作成したパブリックサブネット

セキュリティグループには以下の値を入力する。
- セキュリティグループ:
ALB-sg

リスナーとルーティングには以下の値を入力する。
- プロトコル:
HTTP - ポート:
80 - アクションのルーティング:
ターゲットグループへ転送 - ターゲットグループ:
Target-ECS

設定を確認しロードバランサーの作成をクリックする。
3-3.ALBへ向けたターゲットグループを作成する。
設定には以下の値を入力する。
- ターゲットの種類:
Application Load Balancer - ターゲットグループ名:
Target-alb - プロトコル
TCP - ポート:
80 - VPC:
事前に作成したVPC
ターゲットを登録には以下の値を入力する。
- Application Load Balancer を登録:
今すぐ登録 - ポート:
ターゲットグループポート 80を使用 - Application Load Balancer:
Test-alb

設定を確認しロードバランサーの作成をクリックする。
3-4.NLBを作成する。
基本的な設定には以下の値を入力する。
- ロードバランサー名:
Test-nlb - スキーム:
インターネット向け - ロードバランサーのIPアドレスタイプ:
IPv4

ネットワーキングマッピングには以下の値を入力する。
- VPC:
事前に作成したVPC - アベイラビリティゾーンとサブネット:
事前に作成したパブリックサブネット - IPv4アドレス:
AWSによって割り当て済み

セキュリティグループには以下の値を入力する。
- セキュリティグループ:
NLB-sg

リスナーとルーティングには以下の値を入力する。
- プロトコル:
TCP - ポート:
80 - ターゲットグループ:
Target-alb
設定を確認しロードバランサーの作成をクリックする。

4.ECSで作成したコンテナ上のWebサイトにアクセスする
4-1.作成したNLBからDNS名をブラウザに入力し以下の画面が表示されることを確認する。
