はじめに
AWS Solutions Architect Associate (SAA) の学習中に整理した ELB(ALB / NLB / GWLB) 関連の知識をまとめました。
「どの LB を選ぶか」は試験で頻出であり、プロトコル・Elastic IP 対応・WAF 統合などの違いを正確に把握しておくことが重要です。
本記事は個人の学習ノートをベースにしています。誤りがあればコメントでご指摘いただけると助かります。
サービス概要
ELB の種類
| ALB | NLB | GWLB | CLB | |
|---|---|---|---|---|
| レイヤー | L7(HTTP/HTTPS) | L4(TCP/UDP/TLS) | L3/L4 | L4/L7 |
| Elastic IP | ❌ | ✅ | ✅ | ❌ |
| WAF 統合 | ✅ | ❌ | ❌ | ❌ |
| クロスリージョン | ❌ | ❌ | ❌ | ❌ |
試験での判断ポイントです。
- HTTP/HTTPS + ルーティング → ALB
- TCP/UDP + 固定 IP → NLB
- IP ホワイトリスト → NLB(Elastic IP 対応)
- WAF が必要 → ALB(または CloudFront)
ALB のルーティング種類
| 種類 | 基準 |
|---|---|
| Path-based | URL パス(/orders → サービス A) |
| Host-based | HTTP ヘッダーの Host(api.example.com) |
| HTTP header-based | HTTP ヘッダーの値 |
| HTTP method-based | HTTP メソッド |
| Query string-based | クエリパラメータ |
| Source IP CIDR-based | 送信元 IP |
SNI(Server Name Indication)
- 1つの ALB リスナーに複数の SSL 証明書をバインド可能
- 異なるドメインごとに別の証明書を使用できる
- ワイルドカード(
*.example.com)は同一ドメインのサブドメインのみ
Cross-Zone Load Balancing
| 有効 | 無効 | |
|---|---|---|
| 分散方法 | 全 AZ の全ターゲットに均等 | 各 AZ のターゲットのみ |
- ALB はデフォルト有効、NLB はデフォルト無効
NLB のターゲットルーティング
- インスタンス ID 指定 → プライマリ ENI のプライマリプライベート IP に転送
- IP アドレス指定 → 任意の ENI のプライベート IP
WAF をデプロイできるサービス
- ✅ CloudFront、ALB、API Gateway、App Runner、Global Accelerator
- ❌ EC2(直接)、NLB、ASG
ALB の重要な制約
- ALB は単一リージョン内のみ動作(クロスリージョン不可)
- ALB に Elastic IP は割り当てられない
Cognito User Pools + ALB 統合
- ALB のリスナールールに authenticate アクションを追加
- アプリ側で認証実装不要
- User Pools = 認証(認可は Identity Pools)
試験で問われる設計パターン
ルーティング系
URL パスに基づくルーティング → ALB Path-based Routing
シナリオ: /api と /images で異なるバックエンドサービスにルーティングしたいです。どの機能を使うべきでしょうか?
正解: Path-based Routing
- URL パス → Path-based
- URL ドメイン → Host-based
1つの ALB で複数ドメインの HTTPS → SNI
シナリオ: 1つの ALB で app1.example.com と app2.different.com の2つの異なるドメインに対して HTTPS を提供したいです。どの機能を使うべきでしょうか?
正解: SSL 証明書 + SNI
- ワイルドカードは同一ドメインのサブドメインのみ
- SNI で異なるドメインに異なる証明書をバインド
Cross-Zone LB 系
Cross-Zone LB 無効時のトラフィック計算
シナリオ: AZ-A に4ターゲット、AZ-B に6ターゲットがある NLB で、Cross-Zone Load Balancing が無効です。AZ-A の各ターゲットが受け取るトラフィックの割合は?
正解: 各ターゲット = 12.5%
- Cross-Zone 無効: Route 53 が各 AZ に50%ずつ → AZ-A: 50% ÷ 4 = 12.5%
- Cross-Zone 有効なら: 100% ÷ 10 = 10% / ターゲット
Cross-Zone LB の有効 / 無効時の分散
シナリオ: AZ-A に1台、AZ-B に4台あります。Cross-Zone が有効な場合と無効な場合、トラフィックはどう分散されますか?
正解:
-
有効時: 全5台に均等 → 各20%
-
無効時: AZ ごとに50% → AZ-A: 1台で50%、AZ-B: 4台で各12.5%
-
ALB はデフォルト有効、NLB はデフォルト無効
セキュリティ系
ALB が EC2 を unhealthy と判定(直接アクセスは可能)
シナリオ: ALB 配下の EC2 に直接アクセスすると正常ですが、ALB 経由では unhealthy と表示されます。原因として考えられるものを2つ選んでください。
正解:
- EC2 の SG が ALB の SG からのトラフィックを許可していない
- ヘルスチェックのルートが誤設定
EC2 の SG で ALB からのトラフィックのみ許可 → ALB の SG ID をソースに指定
シナリオ: EC2 のセキュリティグループで、ALB からのトラフィックのみを許可したいです。最もセキュアな設定方法は?
正解: EC2 の SG インバウンドに、ALB の SG ID をソースとして追加
- CIDR より SG ID の方がセキュア
ALB でユーザー認証をオフロード → Cognito User Pools
シナリオ: アプリケーション側で認証ロジックを実装せずに、ALB レベルでユーザー認証を行いたいです。どの方法が最適でしょうか?
正解: Cognito User Pools を ALB に統合
- User Pools = 認証
- Identity Pools = AWS 認証情報の取得
- CloudFront + User Pools は Lambda@Edge が必要
HA + WAF 保護 → ALB + ASG Multi-AZ + WAF
シナリオ: Web アプリケーションに高可用性、スケーラビリティ、WAF 保護を同時に実現したいです。どの構成が最適でしょうか?
正解: ASG(Multi-AZ)+ ALB + WAF
- WAF は NLB / ASG には統合不可
- 「Auto Scaling なし」はスケーラブルではない
リクエストレート制限で攻撃防止 → WAF + Rate-Based Rule
シナリオ: 特定の IP アドレスから異常な数のリクエストが送られてきています。レート制限で対処するにはどうすべきでしょうか?
正解: AWS WAF + Rate-Based Rule(ALB に統合)
- Shield は DDoS 保護(Rate-Based Rule は不可)
- NACL はレートベース制御不可
LB 選択系
固定パブリック IP + HA + スケーリング → NLB + ASG
シナリオ: クライアントのファイアウォールに IP アドレスをホワイトリスト登録する必要があります。HA とスケーリングも確保したいです。
正解: NLB + ASG
- NLB = 固定 IP(Elastic IP 対応)
- ALB / CLB = 固定 DNS(IP は変動)
TCP + UDP + グローバル低レイテンシー → Global Accelerator + NLB
シナリオ: TCP と UDP の両方のプロトコルをサポートするアプリケーションを、グローバルに低レイテンシーで提供したいです。
正解:
- Global Accelerator + LB 配下の EC2 を登録
- 各リージョンに NLB(TCP + UDP)
- UDP → NLB(ALB は HTTP/HTTPS のみ)
- PrivateLink は TCP のみ
API レート制限 + クライアント別クォータ → API Gateway
シナリオ: API のレート制限をクライアントごとに設定したいです。どのサービスが適切でしょうか?
正解: API Gateway + Usage Plans + API Keys
- ALB / NLB / GWLB にはネイティブなレート制限機能がない
パッチ適用系
ALB 配下 EC2 の安全なパッチ適用 → SSM Automation + Maintenance Windows
シナリオ: ALB 配下の EC2 にパッチを適用したいですが、サービスを中断せずに安全に行いたいです。
正解:
- SSM Automation +
AWSEC2-PatchLoadBalancerInstanceドキュメント - SSM Maintenance Windows でスケジュール管理
- ALB からの除外 → パッチ → 再登録を全自動
- ネットワーク無効化は SSM 通信が切断されて失敗する
おわりに
ELB は「ALB vs NLB」の選択が最大のポイントです。「HTTP/HTTPS + WAF → ALB」「TCP/UDP + 固定 IP → NLB」という基本ルールに加え、Cross-Zone LB のデフォルト設定の違いや、SNI によるマルチドメイン対応を押さえておくと、ほとんどの問題に対応できます。
間違いや補足があればぜひコメントで教えてください。