レック・テクノロジー・コンサルティング株式会社TECH BLOG

【コンテナ入門#3】AWS ALB+ECS FargateでWebアプリを公開する方法

はじめに

前回の【コンテナ入門#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名を使ったアクセス確認方法

作業の流れ

これから行う作業は、大きく分けて以下のような流れで進めていきます。

  1. ALB作成・ターゲットグループ作成
  2. ECSサービス作成・DNS名を利用したアクセス確認

それでは、まずALBの作成から始めていきましょう。

手順

1.ALB

1.1 ALBを作成する

1.1.1 EC2サービス内のロードバランサーを選択し、「ロードバランサーの作成」を選択します。
3.ALB&ECSサービス_1.png
1.1.2 「ロードバランサーの種類の選択」で「Application Load Balancer」を選択し、以下の画像のように「VPC」「サブネット」などを設定します。

3.ALB&ECSサービス_2.png
3.ALB&ECSサービス_3.png

3.ALB&ECSサービス_4.png3.ALB&ECSサービス_5.png

1.1.3 「リスナーとルーティング」内のターゲットグループの設定では、「ターゲットグループの作成」から新規ターゲットグループを設定します。(1.1.2の4枚目画像「ターゲットグループの作成」を要参照)

今回はFargateを利用しているので「ターゲットの種類」は「IPアドレス」を選択します。

※Fargate には EC2 インスタンスが存在しないため、ALBから直接 IPアドレスでアクセスする必要があります。

3.ALB&ECSサービス_6.png3.ALB&ECSサービス_7.png3.ALB&ECSサービス_8.png

2.ECS

Fargateで起動したコンテナを外部公開するために、ALBと連携した ECS サービスを作成します。

2.1 ECS サービス作成

2.1.1 前回の【コンテナ入門#2】の「2.ECSクラスター作成」で作成したECSクラスターを押下し、サービス欄の「作成」を押下します。

ECSクラスターの作成については、"【コンテナ入門#2】作成したWebアプリをAWS ECS(Fargate)にデプロイしてみた"をご覧ください。

3.ALB&ECSサービス_9.png3.ALB&ECSサービス_10.png



2.1.2 以下のように選択し、サービスの作成を行います。

  • サービスの詳細
    • タスク定義ファミリー:【コンテナ入門#2】の「2.2 ECS タスク定義作成」で作成したタスク定義を選択
    • タスク定義のリビジョン:1
    • サービス名:任意のサービス名

3.ALB&ECSサービス_11.png

  • 環境
    • コンピューティングオプション:起動タイプ
    • 起動タイプ:Fargate
    • プラットフォームバージョン:latest

3.ALB&ECSサービス_12.png

  • デプロイ設定
    • 必要なタスク:1
    • ヘルスチェックの猶予期間:10秒

3.ALB&ECSサービス_13.png

  • ネットワーキング
    • VPC:事前に作成したVPC
    • サブネット:事前に作成したサブネット
    • セキュリティグループ:事前に作成したセキュリティグループ

3.ALB&ECSサービス_14.png

  • ロードバランシング
    • 「ロードバランシングを使用」にチェックを入れる
    • VPC:ネットワーキングで選択したVPCと同じことを確認する
    • ロードバランサーの種類:Application Load Balancer
    • Application Load Balancer:既存のロードバランサーを使用
    • リスナー:既存のリスナーを使用→HTTP:80
    • ターゲットグループ:既存のターゲットグループを使用→本記事「1.1.3」で作成したターゲットグループを選択

3.ALB&ECSサービス_15.png3.ALB&ECSサービス_16.png

3.ALB&ECSサービス_17.png

2.1.3 ロードバランサーのDNS名からのアクセス確認

EC2サービスのロードバランサーから対象のロードバランサー名のDNS名を利用して、自PCのブラウザからアクセス確認を行います。

3.ALB&ECSサービス_18.png

3.ALB&ECSサービス_19.png

上の画像のように【コンテナ入門#2】で設定したindex.htmlファイルの内容が表示されれば完了です。

最後に

今回は、ALBとECSサービス(Fargate)を連携し、Webアプリケーションを外部に公開する方法を紹介しました。

次回の【コンテナ入門#4】では、「コードを変更してpush するだけで、自動的にECSにデプロイされる」仕組みを、AWSのCodeシリーズのサービス(CodeCommit・CodeBuild・CodeDeploy・CodePipeline)を利用して構築していきます。そちらも是非ご覧ください。

この記事をシェアする

  • Facebook
  • X
  • Pocket
  • Line
  • Hatena
  • Linkedin

資料請求・お問い合わせはこちら

ページトップへ戻る