はじめに
前回の【コンテナ入門#2】では、Dockerで作成したWebアプリケーションを、AWSのECS(Fargate)にデプロイし、ECR経由で実行するところまでを一通り行いました。
今回はその環境をさらに発展させ、AWSのApplication Load Balancer(ALB)とECS(Fargate)を連携させて、Webアプリケーションを外部公開する方法を解説していきます。
※クラスターの作成やECR・ECSへのデプロイ手順については、前回の記事【コンテナ入門#2】をご参照ください。
ALBを利用することで、インターネットからのアクセスを受け取り、自動的に適切なECSコンテナに振り分けられるようになります。
今回は、Fargate(サーバーレスなコンテナ実行環境)を使用しているため、「ターゲットタイプ」を「IP」に設定し、ALBとECSサービスを正しく接続する必要があります。
また、ECSサービスの作成とロードバランサー連携によって、コンテナの起動やスケーリングの管理を自動化できるようになります。
作業を通して学べるポイント
- AWS Application Load Balancer(ALB)の基本構成と役割
- ALBのターゲットグループ設定(ターゲットタイプ「IP」)の方法
- ECSサービスとALBの連携方法
- ALBのDNS名を使ったアクセス確認方法
作業の流れ
これから行う作業は、大きく分けて以下のような流れで進めていきます。
- ALB作成・ターゲットグループ作成
- ECSサービス作成・DNS名を利用したアクセス確認
それでは、まずALBの作成から始めていきましょう。
手順
1.ALB
1.1 ALBを作成する
1.1.1 EC2サービス内のロードバランサーを選択し、「ロードバランサーの作成」を選択します。

1.1.2 「ロードバランサーの種類の選択」で「Application Load Balancer」を選択し、以下の画像のように「VPC」「サブネット」などを設定します。
1.1.3 「リスナーとルーティング」内のターゲットグループの設定では、「ターゲットグループの作成」から新規ターゲットグループを設定します。(1.1.2の4枚目画像「ターゲットグループの作成」を要参照)
今回はFargateを利用しているので「ターゲットの種類」は「IPアドレス」を選択します。
※Fargate には EC2 インスタンスが存在しないため、ALBから直接 IPアドレスでアクセスする必要があります。
2.ECS
Fargateで起動したコンテナを外部公開するために、ALBと連携した ECS サービスを作成します。
2.1 ECS サービス作成
2.1.1 前回の【コンテナ入門#2】の「2.ECSクラスター作成」で作成したECSクラスターを押下し、サービス欄の「作成」を押下します。
ECSクラスターの作成については、"【コンテナ入門#2】作成したWebアプリをAWS ECS(Fargate)にデプロイしてみた"をご覧ください。
2.1.2 以下のように選択し、サービスの作成を行います。
- サービスの詳細
- タスク定義ファミリー:【コンテナ入門#2】の「2.2 ECS タスク定義作成」で作成したタスク定義を選択
- タスク定義のリビジョン:1
- サービス名:任意のサービス名
- 環境
- コンピューティングオプション:起動タイプ
- 起動タイプ:Fargate
- プラットフォームバージョン:latest
- デプロイ設定
- 必要なタスク:1
- ヘルスチェックの猶予期間:10秒
- ネットワーキング
- VPC:事前に作成したVPC
- サブネット:事前に作成したサブネット
- セキュリティグループ:事前に作成したセキュリティグループ
- ロードバランシング
- 「ロードバランシングを使用」にチェックを入れる
- VPC:ネットワーキングで選択したVPCと同じことを確認する
- ロードバランサーの種類:Application Load Balancer
- Application Load Balancer:既存のロードバランサーを使用
- リスナー:既存のリスナーを使用→HTTP:80
- ターゲットグループ:既存のターゲットグループを使用→本記事「1.1.3」で作成したターゲットグループを選択
2.1.3 ロードバランサーのDNS名からのアクセス確認
EC2サービスのロードバランサーから対象のロードバランサー名のDNS名を利用して、自PCのブラウザからアクセス確認を行います。
上の画像のように【コンテナ入門#2】で設定したindex.htmlファイルの内容が表示されれば完了です。
最後に
今回は、ALBとECSサービス(Fargate)を連携し、Webアプリケーションを外部に公開する方法を紹介しました。
次回の【コンテナ入門#4】では、「コードを変更してpush するだけで、自動的にECSにデプロイされる」仕組みを、AWSのCodeシリーズのサービス(CodeCommit・CodeBuild・CodeDeploy・CodePipeline)を利用して構築していきます。そちらも是非ご覧ください。