はじめに
EC2 で動かしている Spring Boot アプリの前に、ロードバランサー(ALB)を立てようとしていました。手順どおりにターゲットグループを作って、いよいよ ALB のリスナー設定…。
ところが、リスナーの「転送先(ターゲットグループ)」のプルダウンが、空っぽ。さっき作ったばかりのターゲットグループが、選択肢に出てきません。
「作ったのに、なんで一覧に居ないの?」と固まりました😅
ターゲットグループの作り方を疑って何度も見直しましたが、原因はまったく別のところにありました。同じところで止まった人のために残します。
環境
- AWS(EC2 + Application Load Balancer)
- 自作 VPC(
10.0.0.0/16)/ リージョン ap-northeast-1 - ターゲット:EC2 上の Spring Boot アプリ(HTTP・ポート 8080)
起きたこと
まず、ターゲットグループはちゃんと作れていました。
- ターゲットタイプ:インスタンス
- プロトコル / ポート:HTTP / 8080
- VPC:自作 VPC(
vpc-xxxx) - ターゲット:EC2 インスタンスを登録済み
次に ALB 作成ウィザードへ進み、リスナー(HTTP:80)の「ターゲットグループへ転送」を選択。その転送先のプルダウンを開くと——
ターゲットグループ
┌─────────────────────────┐
│ (選択肢なし) │ ← さっき作ったやつが居ない…
└─────────────────────────┘
ついでに気づくと、セキュリティグループの欄も、自分で作った ALB 用 SG が出てこず、default だけになっていました。
原因
スクロールして上の「ネットワークマッピング」を見たところ、原因が分かりました。
VPC
┌──────────────────────────────────────────┐
│ vpc-yyyy (172.31.0.0/16) (デフォルト) │ ← これ
└──────────────────────────────────────────┘
ウィザードの VPC が、自作 VPC ではなく「デフォルト VPC」になっていたのです。
ALB・ターゲットグループ・セキュリティグループは、同じ VPC の中のものしか組み合わせられません。私のターゲットグループと ALB 用 SG は自作 VPC(10.0.0.0/16)の中にあるのに、ウィザードはデフォルト VPC(172.31.0.0/16)を見ていた。だから——
- 転送先プルダウン → 別 VPC のターゲットグループは出てこない
- セキュリティグループ → 別 VPC の SG は出ず、default だけ
「転送先が出ない」という症状の犯人は、ターゲットグループでもリスナーでもなく、VPC の選択ミスだったわけです。
解決
ネットワークマッピングの VPC を自作 VPC に変えるだけでした。
- VPC のプルダウンで
vpc-xxxx(自作 VPC10.0.0.0/16)を選択 - VPC を変えると AZ / サブネットの選択がリセットされるので、public サブネットを選び直す
- セキュリティグループで
defaultを外し、自作の ALB 用 SG を選択 - リスナーの転送先プルダウンを開くと——ターゲットグループが出てくる🎉
ターゲットグループ
┌─────────────────────────┐
│ my-target-group (HTTP) │ ← 出た!
└─────────────────────────┘
「転送先が空」のときは、リスナーやターゲットグループをいじる前に、まず VPC が正しいかを上に戻って確認。これで解決しました。
学び
- 症状(転送先が出ない)≠ 原因(VPC 違い)。 AWS は「症状が出る場所」と「本当の原因」がズレることがある。
- ALB・ターゲットグループ・SG は同じ VPC でないと組み合わせられない。 一覧に出てこないときは、まず VPC 違いを疑う。
- 自作 VPC を使うときは、ALB 作成ウィザードの VPC 選択を最初に確認する。VPC を直すと、後ろ(サブネット・SG・転送先)が芋づる式に正しくなる。
おわりに
「作ったはずのものが選択肢に居ない」ときは、設定そのものより**“どの VPC を見ているか”**を疑う——という小さなメモです😅 同じく ALB のリスナー設定で固まった人の役に立てば嬉しいです🙌