はじめに
AWSのApplication Load Balancer(ALB)は、トラフィックをターゲットグループにルーティングするための重要なコンポーネントです。
本記事では、ALBのリスナーとルールについて詳しく解説します。
書こうと思った理由
AWS環境で負荷分散を行う際にALBを使用する機会が多く、リスナーとルールの設定を正しく理解していないと、適切なトラフィック制御ができません。
特に、複数のサービスをホストする場合やHTTPSリダイレクトを実装する際には、ルールの使い方が重要になります。
そこで、ALBのリスナーとルールについて整理し、設定のポイントをまとめました。
ALBのリスナーとは
リスナー(Listener)は、ALBが受信するトラフィックをどのように処理するかを決定するコンポーネントです。
リスナーには、プロトコルとポートを指定し、ルールを設定することでリクエストの振り分けを行います。
リスナーの主な構成要素
- プロトコル: HTTP または HTTPS
- ポート: 80(HTTP)、443(HTTPS)など
- デフォルトアクション: リクエストをどのターゲットグループに送るかのデフォルト動作
ALBのルールとは
リスナーには複数のルール(Rules)を設定でき、これによりトラフィックを細かく制御できます。ルールは以下の要素で構成されます。
ルールの構成要素
- 条件(Conditions): 特定のリクエストを識別するための条件(例: パス、ホストヘッダー、HTTPヘッダーなど)
- アクション(Actions): 条件を満たしたリクエストに対する処理(例: 転送、リダイレクト、固定レスポンス)
- 優先度(Priority): ルールの適用順(数値が小さいほど優先)
ルールの具体例
例1: パスベースルーティング
条件: パスが `/api/*`
アクション: API用のターゲットグループに転送
例2: ホストベースルーティング
条件: ホストが `example.com`
アクション: `example.com` 専用のターゲットグループに転送
例3: HTTP to HTTPS リダイレクト
条件: HTTP リクエスト
アクション: HTTPS にリダイレクト
ALBのルール設定方法
AWS マネジメントコンソールを使用する場合
- EC2 ダッシュボード > ロードバランサー に移動
- 対象の ALB を選択し、リスナー タブを開く
- ルールを編集 をクリックし、新しいルールを追加
- 条件とアクションを設定し、保存
AWS CLI を使用する場合
aws elbv2 create-rule \
--listener-arn <リスナーのARN> \
--priority 10 \
--conditions '[{"Field": "path-pattern", "Values": ["/api/*"]}]' \
--actions '[{"Type": "forward", "TargetGroupArn": "<ターゲットグループのARN>"}]'
まとめ
- リスナーはALBのエントリーポイントであり、プロトコルやポートを決定する
- ルールは細かいルーティングを実現するために使用される
- AWSマネジメントコンソールやCLIで簡単に設定可能
ALBのリスナーとルールを活用することで、より柔軟なトラフィック管理が可能になります。
用途に応じて適切なルールを設定し、効率的なシステム運用を目指しましょう。