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

設計を把握する
まず、ALBを使ってEC2にアクセスするとはどういうことなのかを図を使って説明したいと思います。
以下の図が今回説明するアーキテクト図です。
- まずRoute53でドメインの名前解決を行います。
- そしてACMというSSL証明書を発行するサービスで発行した証明書をALBにアタッチします。
- アタッチされたALBでEC2にルーティングを行います。
そもそもALBとは何か
ALBとはApplication loadbalancerと呼ばれるAWSサービスです。
主な用途としてはEC2の負荷分散を行うことが挙げられます。例えばEC2を複数作成し、パスによってEC2へのアクセスを振り分けたい時などに使います。
ALBを使うメリット
ALBを使うメリットは様々ですが、
今回はSSL認証を簡単に行うことができる点です。EC2に直接証明書をインストールしてhttps通信を確立することももちろんできますが、ALBを使えばAWSコンソールだけで操作してhttps通信を実現できます。もし複数のEC2を使う場合でもALBにその設定をするだけですべてのEC2にhttps通信を実現することができます。設定方法
では実際にALBを設定していきましょう。今回はEC2のサーバー内のこととRoute53での名前解決に関しては割愛します。
前提として
今回はEC2がすでに起動しているという前提のもと解説をしていきます。
EC2の準備がまだの人は先に作成してしまいましょう。ターゲットグループの作成
まずはターゲットグループの作成を行っていきます。
実はALBは直接EC2にルーティングを行うということはしません。ターゲットグループというものにEC2を登録してそのターゲットグループに向かってALBがルーティングを行うのです。ちょっと面倒ですが、そういうものだと割り切って設定していきましょう。まずは以下の手順に従ってターゲットグループを作成します。- EC2のダッシュボードからロードバランサーを選択
- 「ターゲットグループ」の作成
ターゲットタイプ: インスタンスターゲットグループ名: 任意の名称プロトコル:HTTPポート:80ヘルスチェックヘルスチェックプロトコル:HTTPヘルスチェックパス:/(ただしデフォルトパスが他のパスにリダイレクトする設定がEC2側でされている場合はリダイレクト先のパスを指定する)ターゲットの登録EC2インスタンスを選択して「保留中として以下を含める」ボタンをクリック「ターゲットグループの作成」ボタンをクリック
これでターゲットグループの登録が完了しました。
ロードバランサーの作成
次にロードバランサーの作成を行います。
以下の手順で行いましょう- EC2のダッシュボードからロードバランサーを選択
- 「ロードバランサーの作成」
- ロードバランサータイプ「Application Load Balancer」を選択
ロードバランサー名:任意の名称スキーム:インターネット向けIPアドレスタイプ:IPv4ネットワークマッピングVPC:作成したVPCもしくはデフォルトのVPC(EC2と同じVPCを選択すること)マッピング2つ以上のAZと1つ以上のサブネットを選択
続いてここからが重要なポイントです。セキュリティグループ
セキュリティグループの設定を行っていきます。
インバウンドルールに80番ポートと443番ポートが解放されたセキュリティグループを選択しましょうもしまだセキュリティグループを作成していない場合は80番ポートと443番ポートを解放したセキュリティグループを作成してください。ここから少しややこしくなるのでまずはを図を見て理解しましょう。

リスナー
リスナーを設定していきます。
リスナーとはALBが何番ポートで通信を待ち受けるかというのを設定するものです。今回は上の図でもあるようにリスナーには80番ポートと443番ポートで作成します。プロトコル:HTTP:80ターゲットグループ:先ほど作ったEC2へのターゲットグループ(あとでリダイレクト設定を行いますが、とりあえず今はこれで)
プロトコル:HTTPS:443ターゲットグループ:先ほど作ったEC2へのターゲットグループデフォルトのSSL/TLS証明書ACMから証明書を選択(もし証明書を作成していない場合はACMから証明書を発行する)
現段階では80番ポートのアクセスのリダイレクト設定はできていません。最後に「ロードバランサーを作成」ボタンをクリックしましょうリダイレクト設定
先ほど作成したロードバランサーを選択しましょう。
そしてHTTP:80を選択しましょう。

セキュリティグループの設定
最後にセキュリティグループの設定を行います。
「さっきもしたじゃん」と思うかもしれませんが、それはALBの設定です。ここではEC2側のセキュリティグループを設定していきます。もう一度このイメージを見てください。


まとめ
ALBは負荷分散だけでなく、SSL認証やリダイレクト設定も行うことができます。
この記事を見るだけではなかなか覚えられないと思いますので是非、ご自分の環境で手を動かしながら学習を進めていってください。それでは今日はここまで