NANIGE BLOG
2023.10.22
2024.07.28

わかりやすく解説!ALBでEC2にアクセスする方法

IT/ AWS/ ALB/ EC2/ SSL
今回はALB(Application load balancer)を使ってEC2にアクセスする方法を紹介します。

設計を把握する

まず、ALBを使ってEC2にアクセスするとはどういうことなのかを図を使って説明したいと思います。

以下の図が今回説明するアーキテクト図です。

画像ファイル3

図の説明を簡単にします。

  1. まずRoute53でドメインの名前解決を行います。
  2. そしてACMというSSL証明書を発行するサービスで発行した証明書をALBにアタッチします。
  3. アタッチされたALBでEC2にルーティングを行います。

このような流れでEC2へのアクセスを設定しますが、いくつか注意するポイントがあるのでそこをしっかりと解説していきます。

そもそもALBとは何か

ALBとはApplication loadbalancerと呼ばれるAWSサービスです。

主な用途としてはEC2の負荷分散を行うことが挙げられます。

例えばEC2を複数作成し、パスによってEC2へのアクセスを振り分けたい時などに使います。

画像ファイル2

こうすることによってEC2への負荷を軽減させるという役割を持ちます。

もちろんこれはあくまで一例ですので他にも色々な条件を組み合わせたルーティング方法があります。

ただし、今回はEC2は一つしか使わない想定ですので負荷分散という意味では使いません。

ALBを使うメリット

ALBを使うメリットは様々ですが、

今回はSSL認証を簡単に行うことができる点です。

EC2に直接証明書をインストールしてhttps通信を確立することももちろんできますが、

ALBを使えばAWSコンソールだけで操作してhttps通信を実現できます

もし複数のEC2を使う場合でもALBにその設定をするだけですべてのEC2にhttps通信を実現することができます。

設定方法

では実際にALBを設定していきましょう。今回はEC2のサーバー内のこととRoute53での名前解決に関しては割愛します。

前提として

今回はEC2がすでに起動しているという前提のもと解説をしていきます。

EC2の準備がまだの人は先に作成してしまいましょう。

ターゲットグループの作成

まずはターゲットグループの作成を行っていきます。

実はALBは直接EC2にルーティングを行うということはしません

ターゲットグループというものにEC2を登録して

そのターゲットグループに向かってALBがルーティングを行うのです。

ちょっと面倒ですが、そういうものだと割り切って設定していきましょう。

まずは以下の手順に従ってターゲットグループを作成します。

  1. EC2のダッシュボードからロードバランサーを選択
  2. 「ターゲットグループ」の作成

次にターゲットグループの設定を行います。

ターゲットタイプ: インスタンス

ターゲットグループ名: 任意の名称

プロトコル:HTTP

ポート:80

ヘルスチェック

ヘルスチェックプロトコル:HTTP

ヘルスチェックパス:/

(ただしデフォルトパスが他のパスにリダイレクトする設定がEC2側でされている場合はリダイレクト先のパスを指定する)

ターゲットの登録

EC2インスタンスを選択して「保留中として以下を含める」ボタンをクリック

「ターゲットグループの作成」ボタンをクリック

これでターゲットグループの登録が完了しました。

ロードバランサーの作成

次にロードバランサーの作成を行います。

以下の手順で行いましょう

  1. EC2のダッシュボードからロードバランサーを選択
  2. 「ロードバランサーの作成」
  3. ロードバランサータイプ「Application Load Balancer」を選択

次にロードバランサーの設定を行っていきます。

ロードバランサー名:任意の名称

スキーム:インターネット向け

IPアドレスタイプ:IPv4

ネットワークマッピング

VPC:作成したVPCもしくはデフォルトのVPC

(EC2と同じVPCを選択すること)

マッピング

2つ以上のAZと1つ以上のサブネットを選択

続いてここからが重要なポイントです。

セキュリティグループ

セキュリティグループの設定を行っていきます。

インバウンドルールに80番ポートと443番ポートが解放されたセキュリティグループを選択しましょう

もしまだセキュリティグループを作成していない場合は80番ポートと443番ポートを解放したセキュリティグループを作成してください。

ここから少しややこしくなるのでまずはを図を見て理解しましょう。

画像ファイル4

画像ファイル5

http(つまり80番ポート)でアクセスしてきた場合はリダイレクトといってもう一度https通信でアクセス要求するということをALBに設定します。

この二つのパターンを実現するために次の設定を行います。

リスナー

リスナーを設定していきます。

リスナーとはALBが何番ポートで通信を待ち受けるかというのを設定するものです。

今回は上の図でもあるようにリスナーには80番ポート443番ポートで作成します。

プロトコル:HTTP:80

ターゲットグループ:先ほど作ったEC2へのターゲットグループ

(あとでリダイレクト設定を行いますが、とりあえず今はこれで)

プロトコル:HTTPS:443

ターゲットグループ:先ほど作ったEC2へのターゲットグループ

デフォルトのSSL/TLS証明書

ACMから証明書を選択

(もし証明書を作成していない場合はACMから証明書を発行する)

現段階では80番ポートのアクセスのリダイレクト設定はできていません。

最後に「ロードバランサーを作成」ボタンをクリックしましょう

リダイレクト設定

先ほど作成したロードバランサーを選択しましょう。

そしてHTTP:80を選択しましょう。

画像ファイル6

上記のチェックボックスをチェックしたのちに「アクション」をクリックして

ルールの編集」をクリックしましょう。

今はデフォルトアクションが「ターゲットグループへ転送」にチェックが入っていますが、

下記のように「URLにリダイレクト」に変更しましょう。

画像ファイル11

図のように下の方のポート番号を443にしましょう。

※上のポートは変更しないように注意しましょう。

最後に「変更内容を保存」をクリックしてリダイレクト設定は完了です。

セキュリティグループの設定

最後にセキュリティグループの設定を行います。

「さっきもしたじゃん」と思うかもしれませんが、それはALBの設定です。

ここではEC2側のセキュリティグループを設定していきます。

もう一度このイメージを見てください。

画像ファイル4

画像ファイル5

お気づきの方もいるかもしれませんがEC2はどちらも80番ポートで通信を待ち受けています

というのもこれはSSLの証明書をALBで済ませているためEC2には80番ポートで待ち受けていればよい

というものなのです。

実際ターゲットグループの登録の際も80番ポートでEC2を登録していたと思います。

ですので、EC2に適用するセキュリティグループは80番ポートを開いたものを用意しましょう。

画像ファイル10

ALBとEC2でそれぞれ設定するセキュリティグループを表にしました。

ご覧の通りALBでは80番ポート443番ポートにすべてのアクセス元を表す0.0.0.0/0を設定します。

対してEC2では80番ポートALBのセキュリティグループとする設定にしています。

セキュリティグループでソースを他のセキュリティグループとして設定できるということをここでは覚えておいてください。

これによってEC2ではALBを経由するアクセスのみ許可する設定が実現するのです。

まとめ

ALBは負荷分散だけでなく、SSL認証リダイレクト設定も行うことができます。

この記事を見るだけではなかなか覚えられないと思いますので是非、ご自分の環境で手を動かしながら学習を進めていってください。

それでは今日はここまで

ABOUT ME
たけし
元教育業界で講師を務め

未経験で転職を成功。

現在はWEBを中心に

SEとして活躍中

djangoやlaravelを主に扱う

保有資格:

・ AWS SAA(ソリューションアーキテクトアソシエイト)

・統計検定2級

・日商簿記2級