このトピックでは、アプリケーションロードバランサー(ALB)インスタンスのリスナーの転送ルールを管理する方法について説明します。 ALB リスナーのリスナーの転送ルールをカスタマイズして、クライアントリクエストを 1 つ以上のサーバーグループのバックエンドサーバーに転送し、レスポンスをクライアントに転送できます。
概要
各 ALB インスタンスのリスナーごとに複数の転送ルールを作成できます。転送ルールは、インバウンド転送ルールとアウトバウンド転送ルールに分けられます。ベーシック ALB インスタンスは、インバウンド転送ルールのみをサポートしています。スタンダード ALB インスタンスと WAF 対応 ALB インスタンスは、インバウンド転送ルールとアウトバウンド転送ルールの両方をサポートしています。各転送ルールは、条件とアクションで構成されます。リクエストが転送ルールで指定された条件と一致すると、転送ルールで指定されたアクションが実行されます。転送ルールでは、1 つ以上の条件と 1 つ以上のアクションを指定できます。
スタンダード ALB インスタンスまたは WAF 対応 ALB インスタンスがリクエストを受信すると、ALB インスタンスは インバウンド転送ルール に基づいてリクエストをバックエンドサーバーに配信します。次に、バックエンドサーバーからのレスポンスは、ALB インスタンスの アウトバウンド転送ルール に基づいて処理され、クライアントに返されます。
インバウンド転送ルールを作成する場合、インバウンドの条件とアクションのみを指定できます。
アウトバウンド転送ルールを作成する場合、インバウンドとアウトバウンドの両方の条件を指定できます。ただし、アウトバウンド転送ルールでは、アウトバウンドのアクションのみを指定できます。
各転送ルールには、転送、リダイレクト、または 固定レスポンスを返す アクションのいずれかが含まれている必要があります。これにより、ALB インスタンスが中断することなくクライアントリクエストを転送できるようになります。
表 1. ベーシック ALB インスタンスでサポートされている転送ルール
方向
条件
アクション
インバウンド転送ルール
ドメイン名、パス、および HTTP ヘッダー
転送 および リダイレクト
表 2. スタンダードおよび WAF 対応インスタンスでサポートされている転送ルール
方向
条件
アクション
インバウンド転送ルール
ドメイン名、パス、HTTP ヘッダー、クエリ文字列、HTTP リクエストメソッド、Cookie、および 送信元 IP
転送、リダイレクト、固定レスポンスを返す、書き換え、ヘッダーの追加、ヘッダーの削除、トラフィックのスロットル、トラフィックのミラーリング、および CORS
アウトバウンド転送ルール
インバウンド条件(オプション): ドメイン名、パス、HTTP ヘッダー、クエリ文字列、HTTP リクエストメソッド、Cookie、および 送信元 IP
アウトバウンド条件: レスポンスステータスコード および レスポンスヘッダー
固定レスポンスを返す、ヘッダーの追加、および ヘッダーの削除
一致ポリシー
一致ポリシー : 各クライアントリクエストは、優先順位の高い順に転送ルールと照合されます。ルール番号が小さいほど、優先順位が高くなります。転送ルールが一致すると、すぐにルールに基づいてトラフィックが転送され、一致プロセスは終了します。
カスタムインバウンド転送ルールと一致しないリクエストは、デフォルトの転送ルールに基づいて転送されます。
カスタムアウトバウンド転送ルールと一致しないレスポンスは、ALB によってクライアントに直接返されます。
パスが /* に設定されている場合、すべてのパスへのリクエストは一致と見なされます。予期しないリクエストを転送する場合は、転送条件のパスを /* に設定し、転送アクションを「固定レスポンスを返す」に設定し、ステータスコードを 404 または 403 に設定できます。転送ルールを構成したら、ルールをルールリストの下から 2 番目の位置にドラッグアンドドロップします。
転送ルールの優先順位 : リクエストは、優先順位の高い順に転送ルールと照合されます。数値が小さいほど、優先順位が高くなります。
デフォルトの転送ルール : リスナーを作成すると、システムは自動的にデフォルトのインバウンド転送ルールを作成します。転送条件は - に設定されます。これは、すべてのクライアントリクエストが一致と見なされることを示します。転送アクションは 転送 に設定されています。この場合、トラフィックはリスナーに関連付けられているサーバーグループに転送されます。
デフォルトの転送ルールは削除できません。ただし、転送アクションを構成することで、宛先サーバーグループを変更できます。デフォルトの転送ルールの優先順位は最も低く、調整できません。
制限事項
ベーシック ALB インスタンスは、インバウンドトラフィックの転送ルールの追加のみをサポートしますが、スタンダード ALB インスタンスと WAF 対応 ALB インスタンスは、インバウンドトラフィックとアウトバウンドトラフィックの両方のルールをサポートします。
ベーシック ALB インスタンスの転送ルールを作成する場合、条件を ドメイン名、パス、または HTTP ヘッダー に設定し、アクションを 転送 または リダイレクト に設定できます。他の条件とアクションを指定する場合は、アップグレード して ALB インスタンスをスタンダードまたは WAF 対応エディションに変更してください。
ベーシック、スタンダード、および WAF 対応 ALB インスタンスでは、転送ルールの機能が異なります。詳細については、「機能」をご参照ください。
転送ルールには、次の サービスクォータ が適用されます。転送ルールで指定できるアクション、一致条件、およびワイルドカード文字一致ルールの最大数。
前提条件
サーバーグループが 作成 され、バックエンドサーバーがサーバーグループに追加されています。
ALB インスタンスが 作成 されます。
ALB インスタンス用にリスナーが構成され、サーバーグループがリスナーに関連付けられています。詳細な手順については、「HTTP リスナーを追加する」、「HTTPS リスナーを追加する」、または「QUIC リスナーを追加する」をご参照ください。
転送ルールを作成する
リスナーを作成するときに、デフォルトの転送ルールを構成できます。リスナーを作成した後に転送ルールを追加することもできます。
ALB コンソール にログインします。
上部のナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、管理するインスタンスの ID をクリックします。
[リスナー] タブをクリックし、管理するリスナーを見つけて、[アクション] 列の [転送ルールの表示/変更] をクリックします。
[転送ルール] タブで、[インバウンド転送ルール] または [アウトバウンド転送ルール] を選択し、[新しいルールの追加] をクリックします。
[転送ルールの追加] セクションで、次のパラメーターを設定し、[OK] をクリックします。
説明各条件のアクション間の論理演算子は OR です。 1 つの条件に複数のアクションを指定した場合、アクションのいずれかと一致するリクエストが転送されます。
異なる条件間の論理演算子は AND です。転送ルールで複数の条件を指定した場合、すべての条件が満たされたときにリクエストが転送されます。
インバウンド転送ルールを作成する
パラメーター
説明
名前
カスタムルールの名前を指定します。名前を入力しない場合、システムによって自動的に名前が生成されます。
転送ルールには 1 つの名前のみを指定できます。
条件
次の条件のいずれかを指定します。 [+ 条件の追加] をクリックして、さらに条件を追加することもできます。
ドメイン名: 1 つ以上のドメイン名を指定します。ドメイン名一致ルールは、3 ~ 128 文字の長さでなければなりません。ワイルドカード文字としてアスタリスク (*) と疑問符 (?) を使用できます。アスタリスク (*) は文字列にすることができ、疑問符 (?) は単一の文字列のみ可能です。ドメイン名ベースの転送ルールでは、特定のドメイン名、ワイルドカードドメイン名、または正規表現を転送条件として指定できます。詳細については、「ドメイン名ベースの転送ルール」をご参照ください。
この例では、
*.example.comと入力します。パス: 1 つ以上の URL を指定します。 URL または正規表現を指定できます。詳細については、「URL ベースの転送ルール」をご参照ください。
たとえば、URL が
www.example.com/test/test1?x=1&y=2の場合、パラメーターを/test/*に設定できます。HTTP ヘッダー: [キー] フィールドに HTTP ヘッダーの名前を指定し、[値] フィールドに HTTP ヘッダーの値を指定します。 HTTP ヘッダーのキーは 1 ~ 40 文字の長さで、文字、数字、アンダースコア (_)、およびハイフン (-) を含めることができます。 HTTP ヘッダーの値は 1 ~ 128 文字の長さで、印刷可能な文字を含めることができます。スペースで開始または終了することはできません。
たとえば、キーを
user-agentに、値を*Mozilla/4.0*に設定できます。クエリ文字列: 1 つ以上のクエリ文字列のキーと値のペアを追加します。キーは 1 ~ 100 文字の長さで、値は 1 ~ 128 文字の長さでなければなりません。クエリ文字列には、小文字(リクエストは大文字と小文字を区別せずにこれらの条件と一致する可能性があります)、アスタリスク (*)、および疑問符 (?) のみを含めることができます。スペース文字や次の特殊文字を含めることはできません:
# [ ] { } \ | < > &。たとえば、URL が
www.example.com/test/test1?x=1&y=2の場合、クエリ文字列をx:1またはy:2に設定できます。HTTP リクエストメソッド: 1 つ以上の HTTP リクエストメソッドを追加します。有効な値: HEAD、GET、POST、OPTIONS、PUT、PATCH、および DELETE。
Cookie: 1 つ以上の Cookie を追加します。キーは 1 ~ 100 文字の長さで、値は 1 ~ 128 文字の長さでなければなりません。 Cookie には、小文字(リクエストは大文字と小文字を区別せずにこれらの条件と一致する可能性があります)、アスタリスク (*)、および疑問符 (?) のみを含めることができます。スペース文字や次の特殊文字を含めることはできません: [ ] { } < > \ # | &。
たとえば、キーを
keyに、値をvalueに設定できます。送信元 IP: 1 つ以上の IP アドレスまたは CIDR ブロックを追加します。ゼロアドレス (0.0.0.0/x) はサポートされていません。
例:
192.168.1.1/32
アクション
次のアクションのいずれかを指定します。 [+ アクションの追加] をクリックして、さらにアクションを追加することもできます。
転送: ドロップダウンリストからサーバーグループを選択します。サポートされているサーバーグループタイプには、サーバー、IP、および関数計算タイプが含まれます。複数のサーバーグループを追加し、追加されたすべてのサーバーグループに対して [セッション永続性] 機能を有効にすることができます。
説明HTTP をサポートするサーバーグループと HTTPS をサポートするサーバーグループを同時に追加できます。
リダイレクト: [プロトコル] ドロップダウンリストからプロトコルを選択し、[ステータスコード] ドロップダウンリストからステータスコードを選択します。リクエストのリダイレクト先となる [ドメイン名]、[ポート]、および [パス] を指定し、[検索] フィールドにクエリ文字列を入力します。 [プロトコル]、[ドメイン名]、[ポート]、[パス]、および [検索] を同時に空にすることはできません。また、パラメーターのデフォルト値を同時に使用することもできません。
説明[リダイレクト] アクションの [パス] の構成方法の詳細については、「書き換えとリダイレクトのための高度な URL ベースの転送ルール設定」をご参照ください。
${x} を指定した場合、レスポンスで返された値が使用されます。それ以外の場合、各リクエストで指定されたデフォルト値が使用されます。
HTTP ステータスコードの詳細については、「HTTP ステータスコード」をご参照ください。
固定レスポンスを返す: [レスポンスステータスコード] フィールドに HTTP ステータスコードを指定し、[レスポンスコンテンツタイプ] を選択して、[レスポンスコンテンツ] を入力します。レスポンスステータスコードは、2xx、4xx、および 5xx のいずれかの数値文字列である必要があります。文字 x は 0 ~ 9 の数字を示します。
書き換え: [ドメイン名]、[パス]、および [検索] を指定します。 [書き換え] アクションの [パス] の構成方法の詳細については、「書き換えとリダイレクトのための高度な URL ベースの転送ルール設定」をご参照ください。
ヘッダーの追加: 条件と一致するリクエストに追加するヘッダーのキーと値を指定します。新しく追加されたヘッダーは、既存のヘッダーを上書きします。キーは 1 ~ 40 文字の長さで、文字、数字、アンダースコア (_)、およびハイフン (-) を含めることができます。値は 1 ~ 128 文字の長さで、印刷可能な文字と文字を含めることができます。スペース文字で開始または終了することはできません。
ヘッダーの削除: 削除するヘッダーのキーを指定します。次に、指定されたヘッダーのキーと値の両方が削除されます。
説明インバウンド転送ルールのアクションを [ヘッダーの追加] または [ヘッダーの削除] に設定した場合、次のヘッダーはサポートされません:
slb-id、slb-ip、x-forwarded-for、x-forwarded-proto、x-forwarded-eip、x-forwarded-port、x-forwarded-client-srcport、x-forwarded-host、connection、upgrade、content-length、transfer-encoding、keep-alive、te、host、cookie、remoteip、およびauthority。ヘッダーは大文字と小文字が区別されません。トラフィックのスロットル: ビジネス要件に基づいて、次のパラメーターを構成します。
QPS(合計): 1 秒あたりの最大クエリ数 (QPS) を指定します。有効な値: 1 ~ 1000000。
QPS(クライアント IP あたり): 送信元クライアント IP アドレスの最大 QPS 数を指定します。有効な値: 1 ~ 1000000。 [QPS(合計)] と [QPS(クライアント IP あたり)] の両方を設定する場合、QPS(クライアント IP あたり)の値は QPS(合計)の値よりも小さくする必要があります。
説明アクションが [トラフィックのスロットル] に設定されている場合、宛先サーバーグループの [転送] アクションも指定する必要があります。そうしないと、構成は有効になりません。
[トラフィックのスロットル] と [転送] の両方を設定すると、1 秒あたりのクエリ数 (QPS) がしきい値に達する前に、リクエストは指定されたサーバーグループに転送されます。それ以外の場合、HTTP 503 ステータスコードがクライアントに返されます。
[トラフィックのスロットル]、[リダイレクト]、および [転送] を設定すると、QPS がしきい値に達する前に、リクエストは指定されたサーバーグループに転送されます。 QPS がしきい値に達すると、リクエストは別のアドレスにリダイレクトされます。
[トラフィックのスロットル]、[固定レスポンスを返す]、および [転送] を設定すると、QPS がしきい値に達する前に、リクエストは指定されたサーバーグループに転送されます。 QPS がしきい値に達すると、構成したレスポンスがクライアントに返されます。
X-Forwarded-For リクエストヘッダーに複数の IP アドレス(
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …など)が含まれている場合、左端の IP アドレスがクライアント IP アドレスです。転送ルールの照合条件を [送信元 IP] と [QPS(クライアント IP あたり)] に設定する場合は、リスナーの [クライアント IP の取得] をオンにして、ALB が X-Forwarded-For ヘッダーからクライアント IP アドレスを取得できるようにする必要があります。詳細については、「HTTP リスナーを追加する」および「HTTPS リスナーを追加する」をご参照ください。
トラフィックのミラーリング: ドロップダウンリストからサーバーグループを選択します。 サーバータイプ または IP タイプ のサーバーグループを選択できます。
CORS: レスポンスが URL から返され、プロトコル、ドメイン名、またはポートがクライアントからリクエストされたものと異なる場合、クロスオリジンリソースシェアリング (CORS) が有効になります。クロスオリジンリクエストは、シンプルリクエストとプリフライトリクエストに分けられます。
信頼できるオリジン: ブラウザを介してクロスリージョンリソースへのアクセスを許可されている URL を指定します。
許可されたメソッド: 指定された URL がクロスオリジンリソースへのアクセスに使用できる HTTP メソッドを指定します。有効な値: GET、POST、PUT、DELETE、HEAD、OPTIONS、および PATCH。
信頼できるリクエストヘッダー: ブラウザの組み込みヘッダー以外に、CORS リクエストで伝送できるヘッダーを指定します。
信頼できるレスポンスヘッダー: ブラウザまたは JavaScript で解析できるレスポンスヘッダーを指定します。
信頼できるクレデンシャル: CORS リクエストでクレデンシャルを許可するかどうかを指定します。有効な値: 許可 および 拒否。デフォルト値: 許可。
ブラウザのキャッシュ時間: OPTIONS メソッドを使用するプリフライトリクエストをキャッシュできる最大期間を指定します。単位: 秒。有効な値: -1 ~ 172800。
アウトバウンド転送ルールを作成する
パラメーター
説明
名前
カスタムルールの名前を指定します。名前を入力しない場合、システムによって自動的に名前が生成されます。
転送ルールには 1 つの名前のみを指定できます。
インバウンド条件(オプション)
インバウンド条件を選択します。 [+ インバウンド条件の追加] をクリックして、さらにインバウンド条件を追加できます。インバウンド転送ルールの条件の構成方法の詳細については、「転送ルールを作成する」をご参照ください。
アウトバウンド条件
アウトバウンド条件を選択します。 [+ アウトバウンド条件の追加] をクリックして、さらにアウトバウンド条件を追加できます。
レスポンスステータスコード: クライアントに返すレスポンスステータスコードを指定します。有効な値: 100 ~ 599。
コード範囲を指定し、複数のコードとコード範囲をコンマ (,) で区切ることができます (200-233,301 など)。
レスポンスヘッダー: レスポンスで伝送される HTTP ヘッダーを指定します。 [キー] フィールドに HTTP ヘッダーの名前を入力し、[値] フィールドに HTTP ヘッダーの値を入力します。複数の HTTP ヘッダーを指定できます。
アクション
アウトバウンドアクションを選択します。 [+ アクションの追加] をクリックして、さらにアウトバウンドアクションを追加できます。
固定レスポンスを返す: [レスポンスステータスコード] フィールドに HTTP ステータスコードを指定し、[レスポンスコンテンツタイプ] を選択して、[レスポンスコンテンツ] を入力します。レスポンスステータスコードは、2xx、4xx、および 5xx のいずれかの数値文字列である必要があります。文字 x は 0 ~ 9 の数字を示します。
ヘッダーの追加: レスポンスに追加するヘッダーの名前と値を指定します。新しく追加されたヘッダーは、既存のヘッダーを上書きします。
ヘッダーの削除: 削除するヘッダーのキーを指定します。次に、指定されたヘッダーのキーと値の両方が削除されます。
説明アウトバウンド転送ルールでは、[ヘッダーの追加] または [ヘッダーの削除] を次のヘッダーキーに設定することはできません:
connection、upgrade、content-length、およびtransfer-encoding。ヘッダーキーは大文字と小文字が区別されません。
AScript を使用してスクリプトを作成する
[+ 転送ルールの適用後にスクリプトを追加] をクリックして、スクリプトを追加できます。詳細については、「ステップ 2: 転送ルールをカスタマイズするスクリプトを作成する」をご参照ください。
説明スタンダード ALB インスタンスと WAF 対応 ALB インスタンスのみが AScript をサポートしています。ベーシック ALB インスタンスは AScript をサポートしていません。
関連操作
転送ルールの編集または削除、あるいは転送ルールの優先順位の変更は、既存のビジネストラフィックのルーティングに影響を与える可能性があります。更新を実装する前に、更新の影響を徹底的にテストおよび評価し、ピーク時以外に変更を加えて、不要な影響を防ぐことをお勧めします。
転送ルールを変更する
ALB コンソール にログインします。
上部のナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、管理するインスタンスの ID をクリックします。
[リスナー] タブをクリックし、管理するリスナーを見つけて、[アクション] 列の [転送ルールの表示/変更] をクリックします。
[転送ルール] タブで、[受信転送ルール] または [送信転送ルール] をクリックし、編集するルールを選択して、右上隅にある [編集] をクリックします。
ルールを変更した後、[保存] をクリックします。
転送ルールの優先順位を変更する
転送ルールは、優先順位の高いものから順に評価されます。値が小さいほど、優先順位が高くなります。カスタム転送ルールの優先順位はいつでも変更できます。デフォルトの転送ルールの優先順位は変更できません。
ALB コンソール にログインします。
上部のナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、管理するインスタンスの ID をクリックします。
[リスナー] タブをクリックし、管理するリスナーを見つけ、[アクション] 列の [転送ルールの表示/変更] をクリックします。
[転送ルール] タブで、[受信転送ルール] または [送信転送ルール] をクリックし、管理する転送ルールを目的の位置に移動し、[優先順位の変更を保存] をクリックします。
転送ルールを削除する
リスナーのカスタム転送ルールはいつでも削除できます。 デフォルトの転送ルールは削除できません。 リスナーを削除すると、リスナーのすべての転送ルールが削除されます。
ALB コンソール にログインします。
上部のナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、管理するインスタンスの ID をクリックします。
[リスナー] タブをクリックし、管理するリスナーを見つけて、[アクション] 列の [転送ルールの表示/変更] をクリックします。
[転送ルール] タブで、[受信転送ルール] または [送信転送ルール] をクリックし、削除するルールを選択して、右上隅の [削除] をクリックします。
表示されるメッセージで、[OK] をクリックします。
関連情報
ユーザーガイド
転送条件および高度な URL ベースの転送ルールでドメイン名とパスを構成する方法の詳細については、「ドメイン名ベースおよび URL パスベースの転送ルールを構成する」をご参照ください。
ALB 転送ルールの一般的なユースケース:
HTTP リクエストを HTTPS リスナーにリダイレクトする: HTTP リクエストを HTTPS リスナーにリダイレクトするように ALB リスナーの転送ルールを構成します。 これにより、ALB インスタンスでのデータ転送が暗号化され、中間者攻撃やデータ漏洩が防止され、最新かつ安全なネットワークアーキテクチャの構築に役立ちます。
本番トラフィックをステージング環境にミラーリングする: ALB が提供するトラフィックミラーリング機能を使用して、テスト目的で本番トラフィックをステージング環境のバックエンドサーバーにミラーリングします。 ALB は、ビジネスへの影響を防ぐために、テストバックエンドサーバーから受信した応答を自動的に破棄します。
ALB を使用してカナリアリリースを実装する: 条件ベースまたはサーバーグループの重みベースの ALB リスナーの転送ルールを構成して、リクエストの一部を毎回新しいバージョンのアプリケーションにルーティングします。 このプロセス中に、新しいバージョンの安定性を検証します。
API リファレンス
CreateRule: 転送ルールを作成します。
CreateRules: 転送ルールを一括作成します。
DeleteRule: 転送ルールを削除します。
DeleteRules: 転送ルールを一括削除します。
ListRules: 転送ルールを照会します。
UpdateRuleAttribute: 転送ルールを更新します。
UpdateRulesAttribute: 転送ルールを一括更新します。