Application Load Balancer のリスナールール - Elastic Load Balancing

Application Load Balancer のリスナールール

リスナーに対して定義したルールは、ロードバランサーが 1 つ以上のターゲットグループ内のターゲットにリクエストをルーティングする方法を決定します。

各ルールは優先度、1 つ以上のアクション、および 1 つ以上の条件で構成されています。詳細については、「リスナールール」を参照してください。

注記

コンソールには、ルールが優先度順に表示されます。ただし、コンソールには各ルールのシーケンス番号が表示され、AWS CLI または Elastic Load Balancing API によって表示されるルールの優先順位とは異なる場合があります。

要件

  • 各ルールには次のアクションのうち、厳密に 1 つを含む必要があります。forwardredirectfixed-response。またはそれは最後に実行されるアクションである必要があります。

  • 各ルールには、以下の条件の 0 個または 1 つを含めることができます。host-headerhttp-request-methodpath-patternsource-ipおよび 0 個以上の以下の条件 http-headerquery-stringを含めることができます。

  • 条件ごとに最大 3 つの比較文字列、ルールごとに最大 5 つの比較文字列を指定できます。

  • forward アクションはリクエストをそのターゲットグループにルーティングします。forward アクションを追加する前に、ターゲットグループを作成し、それにターゲットを追加します。詳細については、「ターゲットグループの作成」を参照してください。

ルールの追加

リスナーを作成するときはデフォルトのルールを定義し、デフォルト以外の追加のルールはいつでも定義できます。

コンソールを使用してルールを追加するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[ロードバランサー] を選択します。

  3. ロードバランサーを選択します。

  4. [リスナー] タブで、[プロトコル:ポート] 列のテキストを選択して、リスナーの詳細ページを開きます。

  5. [ルール] タブで、[ルールの管理] を選択します。

  6. メニューバーの [Add rules] アイコン (プラス記号) を選択します。これにより、優先順位でルールを挿入できる場所に、[ルールの挿入] アイコンが追加されます。

    
                            メニューバーの [ルールの追加] アイコン
  7. 前の手順で追加した [Insert Rule (ルールの挿入) アイコンのいずれかを選択します。

  8. 以下のように 1 つ以上の条件を追加します。

    1. ホストヘッダー条件を追加するには [条件の追加]、[ホストヘッダー] の順に選択し、ホスト名を入力します (例: *.example.com)。条件を保存するには、チェックマークアイコンを選択します。

      各文字列の最大サイズは 128 文字です。比較では、大文字と小文字は区別されません。次のワイルドカード文字 (* および ?) はサポートされています。

    2. パス条件を追加するには [条件の追加]、[パス] の順に選択し、パスパターンを入力します (例: /img/*)。条件を保存するには、チェックマークアイコンを選択します。

      各文字列の最大サイズは 128 文字です。比較では、大文字と小文字を区別します。次のワイルドカード文字 (* および ?) はサポートされています。

    3. HTTP ヘッダー条件を追加するには、[Add condition (条件の追加)]、[Http header (Http ヘッダー)] の順に選択します。ヘッダーの名前を入力して、1 つ以上の比較文字列を追加します。条件を保存するには、チェックマークアイコンを選択します。

      各ヘッダー名の最大サイズは 40 文字で、ヘッダー名は大文字と小文字が区別されず、ワイルドカードはサポートされていません。各比較文字列の最大サイズは 128 文字で、次のワイルドカード文字 (* と ?) がサポートされています。比較では、大文字と小文字は区別されません。

    4. HTTP リクエストメソッド条件を追加するには、[Add condition (条件の追加)]、[Http request method (Http リクエストメソッド)] の順に選択し、1 つ以上のメソッド名を追加します。条件を保存するには、チェックマークアイコンを選択します。

      各名前の最大サイズは 40 文字です。ここで使えるのは、A~Z、ハイフン (-)、およびアンダーバー (_) です。比較では、大文字と小文字を区別します。ワイルドカードがサポートされていません。

    5. クエリ文字列条件を追加するには、[Add condition (条件の追加)]、[Query string (クエリ文字列)] の順に選択し、1 つ以上のキー/値のペアを追加します。キー/値のペアごとに、キーを省略して値のみを指定できます。条件を保存するには、チェックマークアイコンを選択します。

      各文字列の最大サイズは 128 文字です。比較では、大文字と小文字は区別されません。次のワイルドカード文字 (* および ?) はサポートされています。

    6. 送信元 IP 条件を追加するには、[Add condition (条件の追加)]、[Source IP (送信元 IP)] の順に選択し、1 つ以上の CIDR ブロックを追加します。条件を保存するには、チェックマークアイコンを選択します。

      IPv4 と IPv6 の両方のアドレスを使用できます。ワイルドカードがサポートされていません。

  9. (オプション、HTTPS リスナー) ユーザーを認証するには、[Add action (アクションの追加)]、[Authenticate (認証)] の順に選択し、必要な情報を入力します。アクションを保存するには、チェックマークアイコンを選択します。詳細については、「Application Load Balancer を使用してユーザーを認証する」を参照してください。

  10. 次のアクションのいずれかを追加します。

    • 転送アクションを追加するには、[Add action (アクションの追加)]、[Forward to (転送先)] の順に選択し、1 つ以上のターゲットグループを選択します。複数のターゲットグループを使用する場合は、ターゲットグループごとに重みを選択し、オプションでターゲットグループの維持を有効にします。ターゲットグループの維持を有効にし、複数のターゲットグループが存在する場合は、ターゲットグループでスティッキーセッションも有効にする必要があります。アクションを保存するには、チェックマークアイコンを選択します。詳細については、「転送アクション」を参照してください。

    • リダイレクトアクションを追加するには、[Add action (アクションの追加)]、[Redirect to (リダイレクト先)] の順に選択し、リダイレクト先の URL を指定します。アクションを保存するには、チェックマークアイコンを選択します。詳細については、「リダイレクトアクション」を参照してください。

    • 固定レスポンスアクションを追加するには、[Add action (アクションの追加)]、[Return fixed response (固定レスポンスを返す)] の順に選択し、レスポンスコードと (オプション) レスポンスの本文を指定します。アクションを保存するには、チェックマークアイコンを選択します。詳細については、「固定レスポンスアクション」を参照してください。

    
                            [ルールの挿入] インターフェイス。
  11. [Save] を選択します。

  12. (オプション) ルールの順序を変更するには、矢印を使用し、Save (保存)] を選択します。デフォルトのルールは常に [last (最も低い)] 優先度です。

  13. この画面をそのままにして、メニューバーの [ロードバランサーに戻る] アイコン (戻るボタン) を選択します。

AWS CLI を使用してルールを追加するには

ルールを作成するには、create-rule コマンドを使用します。ルールに関する情報を確認するには、describe-rules コマンドを使用します。

ルールの編集

ルールのアクションおよび条件はいつでも編集できます。ルールの更新はすぐには反映されないため、ルールの更新後しばらくの間、リクエストは以前のルール設定を使用してルーティングされます。すべての未処理のリクエストが完了します。

コンソールを使用してルールを編集するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[ロードバランサー] を選択します。

  3. ロードバランサーを選択します。

  4. [リスナー] タブで、[プロトコル:ポート] 列のテキストを選択して、リスナーの詳細ページを開きます。

  5. [ルール] タブで、[ルールの管理] を選択します。

  6. メニューバーの [Edit rules] アイコン (鉛筆) を選択します。

    
                            メニューバーの [ルールの編集] アイコン。
  7. 編集するルールについては、[編集ルール] アイコン (鉛筆) を選択します。

  8. (オプション) 必要に応じて、条件とアクションを変更します。たとえば、条件またはアクションの編集 (鉛筆アイコン)、条件の追加、HTTPS リスナーのルールへの認証アクションの追加、条件やアクションの削除 (ゴミ箱アイコン) ができます。デフォルトのルールに条件を追加することはできません。

    
                            [Edit Rule (ルールの編集)] インターフェイス。
  9. [Update (更新)] を選択します。

  10. この画面をそのままにして、メニューバーの [ロードバランサーに戻る] アイコン (戻るボタン) を選択します。

AWS CLI を使用してルールを編集するには

modify-rule コマンドを使用します。

ルールの順序変更

ルールは優先順位の低~高順によって評価されます。デフォルトのルールが最後に評価されます。デフォルト以外のルールは、優先順位をいつでも変更できます。デフォルトルールの優先順位は変更できません。

注記

コンソールには、ルールの優先度ではなく、各ルールの相対シーケンス番号が表示されます。コンソールを使用してルールの順序を変更すると、既存のルールの優先度に基づいて新しいルールの優先度が取得されます。ルールの優先度を特定の値に設定するには、AWS CLI または Elastic Load Balancing API を使用します。

コンソールを使用してルールの順序を変更するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[ロードバランサー] を選択します。

  3. ロードバランサーを選択します。

  4. [リスナー] タブで、[プロトコル:ポート] 列のテキストを選択して、リスナーの詳細ページを開きます。

  5. [ルール] タブで、[ルールの管理] を選択します。

  6. メニューバーの [Reorder rules] アイコン (矢印) を選択します。

    
                            メニューバーの [ルールの順序変更] アイコン。
  7. ルールの横にあるチェックボックスをオンにしてから、矢印を使ってルールに新しい優先順位を設定します。デフォルトのルールは常に [last (最も低い)] 優先度です。

  8. ルールの順序変更を完了したら、[Save] を選択します。

  9. この画面をそのままにして、メニューバーの [ロードバランサーに戻る] アイコン (戻るボタン) を選択します。

AWS CLI を使用してルールの優先順位を更新するには

set-rule-priorities コマンドを使用します。

ルールの削除

リスナーのデフォルト以外のルールはいつでも削除できます。リスナーのデフォルトのルールは削除できません。リスナーを削除すると、そのルールはすべて削除されます。

コンソールを使用してルールを削除するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[ロードバランサー] を選択します。

  3. ロードバランサーを選択します。

  4. [リスナー] タブで、[プロトコル:ポート] 列のテキストを選択して、リスナーの詳細ページを開きます。

  5. [ルール] タブで、[ルールの管理] を選択します。

  6. メニューバーの [ルールの削除] アイコン (マイナス記号) を選択します。

  7. ルールのチェックボックスを選択して、[削除] を選択します。リスナーのデフォルトのルールは削除できません。

  8. この画面をそのままにして、メニューバーの [ロードバランサーに戻る] アイコン (戻るボタン) を選択します。

AWS CLI を使用してルールを削除するには

delete-rule コマンドを使用します。