Application Load Balancer (ALB) のリスナー転送ルールを設定して、クライアントリクエストを 1 つ以上のサーバーグループ内のバックエンドサーバーに転送できます。また、これらのルールを使用して、バックエンドからのレスポンスがクライアントに返される方法を管理することもできます。このトピックでは、これらのルールの設定方法について説明します。
転送ルールの概要
ALB インスタンスの各リスナーに対して、複数の転送ルールを作成できます。転送ルールは、インバウンド転送ルールとアウトバウンド転送ルールに分けられます。Basic ALB インスタンスは、インバウンド転送ルールのみをサポートします。Standard および WAF 有効化 ALB インスタンスは、インバウンドとアウトバウンドの両方の転送ルールをサポートします。各転送ルールは、条件と操作で構成されます。条件はパケットを照合し、操作は一致結果に基づいてトラフィックを転送します。各転送ルールに、1 つ以上の条件と 1 つ以上の操作を指定できます。
標準および WAF 対応の ALB インスタンスの場合、クライアントが ALB にリクエストを送信すると、ALB インスタンスは インバウンド転送ルール に基づいてリクエストをバックエンドサーバーに転送します。その後、バックエンドサーバーからの応答は、ALB によって アウトバウンド転送ルール に基づいて処理された後、クライアントに返されます。
受信転送ルールでは、受信条件と操作のみを設定できます。
送信転送ルールでは、送信条件と操作を設定できます。送信転送ルールに受信条件を設定することもできます。
各転送ルールには、クライアントリクエストが転送中に中断されないように、[転送先]、[リダイレクト先]、または[固定レスポンスの返却] のいずれかの操作を含める必要があります。
表 1. Basic エディションインスタンスでサポートされる転送ルール
分類
条件
転送アクション
リクエスト方向
[ドメイン名]、[パス]、および [HTTP ヘッダー]
[転送先] および [リダイレクト先]
表 2. Standard エディションおよび WAF 有効化エディションのインスタンスでサポートされる転送ルール
分類
転送条件
転送アクション
リクエスト方向
[ドメイン名]、[パス]、[HTTP ヘッダー]、[クエリストリング]、[HTTP リクエストメソッド]、[Cookie]、[送信元 IP]。
[転送]、[リダイレクト]、[固定レスポンスの返却]、[書き換え]、[ヘッダーの追加]、[ヘッダーの削除]、[トラフィックスロットリング]、[トラフィックミラーリング]、[CORS]。
レスポンス方向
受信条件(オプション): [ドメイン名]、[パス]、[HTTP ヘッダー]、[クエリストリング]、[HTTP リクエストメソッド]、[Cookie]、[送信元 IP]
送信条件: [レスポンスステータスコード]、[レスポンスヘッダー]
[固定レスポンスの返却]、[ヘッダーの追加]、[ヘッダーの削除]
マッチング原則
マッチングポリシー:各クライアントリクエストは、優先度の高い順に転送ルールと照合されます。ルール番号が小さいほど、優先度が高くなります。リクエストが転送ルールに一致すると、トラフィックはそのルールに基づいて直ちに転送され、照合プロセスは停止します。
クライアントリクエストが他のどの受信転送ルールにも一致しない場合、リクエストはデフォルトの転送ルールに基づいて転送されます。
応答がいずれの送信転送ルールにも一致しない場合、ALB はその応答をクライアントに直接返します。
パスを /* に設定すると、すべてのパスのリクエストに一致します。予期しないリクエストを処理するためのフォールバック転送ルールが必要な場合は、転送条件のパスを /* に設定し、転送操作を [固定レスポンスの返却] に設定し、状態コードを 404 または 403 に設定します。転送ルールを設定した後、ルールを最後から 2 番目の位置にドラッグします。
転送ルールの優先度:リクエストは、優先度の高い順に転送ルールと照合されます。数値が小さいほど、優先度が高くなります。
デフォルト転送ルール:リスナーを作成すると、システムは自動的にデフォルトの受信転送ルールを作成します。転送条件は - に設定され、すべてのクライアントリクエストに一致します。転送操作は、リスナーに関連付けられているサーバーグループへの[転送先]に設定されます。
デフォルトの転送ルールは削除できませんが、転送操作のサーバーグループは変更できます。
デフォルトの転送ルールは最も優先度が低く、その優先度は変更できません。
制限事項
Basic Edition ALB インスタンスは、受信転送ルールのみに対応します。Standard Edition および WAF対応エディション ALB インスタンスは、受信および送信転送ルールの両方に対応します。
Basic Edition の ALB インスタンスでは、転送条件として [ドメイン]、[パス]、および [HTTP ヘッダー] のみ、転送アクションとして [転送] および [リダイレクト] のみがサポートされています。他の転送ルールを使用するには、Standard または WAF-enabled Edition の ALB インスタンスにスペックアップする必要があります。
Basic エディション、Standard エディション、および WAF 有効化エディションの ALB インスタンスでサポートされる機能の詳細については、「特徴」をご参照ください。
ALB インスタンスあたりの転送ルールの数、および転送ルールに追加できる操作エントリ、一致条件エントリ、およびワイルドカード文字を含むエントリの数の制限については、「クォータ」をご参照ください。
前提条件
サーバーグループを作成し、バックエンドサーバーを追加済みであること。
ALB インスタンスを作成済みであること。
ALB インスタンスのリスナーを設定し、サーバーグループを関連付けていること。詳細については、「HTTP リスナーの追加」、「HTTPS リスナーの追加」、または「QUIC リスナーの追加」をご参照ください。
転送ルールの追加
リスナーを作成する際にデフォルトの転送ルールを設定できます。リスナーを作成した後に転送ルールを追加することもできます。
ALB コンソールにログインします。
トップナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、管理するインスタンスの ID をクリックします。
[リスナー] タブをクリックし、管理するリスナーを見つけ、[アクション] 列の[転送ルールの表示/変更] をクリックします。
[転送ルール] タブで、[インバウンド転送ルール] または [アウトバウンド転送ルール] を選択し、[新しいルールを追加] をクリックします。
[転送ルールの追加] パネルで、次の表に記載されているパラメーターを設定し、[OK] をクリックします。
説明同じ条件の複数の値間の論理演算子は OR です。指定された値のいずれかを満たす場合、リクエストは一致と見なされます。
異なる条件間の論理演算子は AND です。リクエストは、指定されたすべての条件を満たす場合にのみ転送されます。
リクエスト転送ルール
パラメーター
説明
名前
ルールのカスタム名を入力します。名前を入力しない場合、システムが自動的に生成します。
転送ルールには 1 つの名前のみ指定できます。
[転送条件]
以下のリストから条件タイプを選択します。[+ 条件の追加] をクリックして、さらに条件を追加することもできます。
[ドメイン名]:1 つ以上のドメイン名を指定します。ドメイン名の一致ルールは 3〜128 文字の長さである必要があります。ワイルドカードとしてアスタリスク (*) と疑問符 (?) を使用できます。アスタリスク (*) は任意の文字列に一致します。疑問符 (?) は正確に 1 文字に一致します。正確なドメイン名、ワイルドカードドメイン名、または正規表現を指定できます。詳細については、「ドメイン名ベースの転送ルール」をご参照ください。
例:
*.example.com。[パス]:1 つ以上のパスを指定します。パスまたは正規表現を指定できます。詳細については、「URL ベースの転送ルール」をご参照ください。
例:URL が
www.example.com/test/test1?x=1&y=2の場合、パスを/test/*に設定します。[HTTP ヘッダー]:[キー] フィールドに HTTP ヘッダー名を入力し、[値] フィールドに HTTP ヘッダー値を入力します。複数のヘッダーを追加できます。キーは 1〜40 文字の長さで、大文字と小文字、数字、アンダースコア (_)、およびハイフン (-) を含めることができます。値は 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 文字の長さである必要があります。有効な文字には、小文字 (大文字と小文字を区別しない一致)、アスタリスク (*)、および疑問符 (?) が含まれます。スペースおよび次の特殊文字は許可されません:[]{}<>\#|&。
例:キー
key。値value。[送信元 IP]:1 つ以上の IP アドレスまたは CIDR ブロックを追加します。ゼロアドレスブロック (0.0.0.0/x) はサポートされていません。
例:
192.168.1.1/32。
[転送操作]
以下のリストから操作タイプを選択します。[+ 操作の追加] をクリックして、さらに操作を追加することもできます。
転送: サーバーグループリストから転送先サーバーグループを選択します。サポートされているサーバーグループタイプには、サーバータイプ、IP タイプ、Function Compute タイプがあります。複数のサーバーグループを追加し、各サーバーグループに [重み] を設定することで、トラフィックの配信比率を制御できます。単一サーバーグループの重みは 0 から 100 の範囲です。複数のサーバーグループを追加する場合、[サーバーグループ間のセッション維持] を有効にすることもできます (この機能では、追加されたすべてのサーバーグループでセッション維持が有効になっている必要があります)。
説明HTTP と HTTPS を同時にサポートするサーバーグループを追加できます。
サーバーグループあたりの最大重みは 10000 まで増やすことができます。この増加をリクエストするには、アカウントマネージャーにお問い合わせください。
[リダイレクト]:[プロトコル] リストからプロトコルを選択し、[状態コード] リストから状態コードを選択します。その後、宛先の[ドメイン名]、[ポート]、[パス]、および[検索]文字列を入力します。[プロトコル]、[ドメイン名]、[ポート]、[パス]、および[検索]フィールドは、すべてが空であるか、デフォルト値を使用することはできません。
説明[リダイレクト] 操作の[パス]の設定方法の詳細については、「再書き込みとリダイレクトのための高度な URL ベースの転送ルール設定」をご参照ください。
${x} はリクエスト内の対応する値を参照します。デフォルトのままにすると、リクエストのデフォルト値が使用されます。
HTTP 状態コードの詳細については、「HTTP 状態コード」をご参照ください。
[固定レスポンスの返却]:[レスポンスステータスコード] を入力し、[レスポンスコンテンツタイプ] を選択して[レスポンスコンテンツ] を入力します。レスポンスステータスコードは、2xx、4xx、または 5xx の形式の数値文字列である必要があります。ここで x は任意の数字です。
[再書き込み]:宛先の[ドメイン名]、[パス]、および[検索]文字列を入力します。[再書き込み] 操作の[パス]の設定方法の詳細については、「再書き込みとリダイレクトのための高度な 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 秒あたりの最大クエリ数を入力します。有効な値:1〜1000000。
[QPS (クライアント IP ごと)]:クライアント IP アドレスごとの 1 秒あたりの最大クエリ数を入力します。有効な値:1〜1000000。[QPS (合計)]と[QPS (クライアント IP ごと)]の両方を設定する場合、[QPS (クライアント IP ごと)] の値は [QPS (合計)] の値より小さくする必要があります。
説明操作が[トラフィックの制限]に設定されている場合、宛先サーバーグループに対して[転送]操作も指定する必要があります。そうしないと、速度制限の設定は効果がありません。
[トラフィックの制限]と[転送]の両方を設定した場合、QPS 制限内のリクエストは指定されたサーバーグループに転送されます。QPS が制限を超えた場合、ALB はクライアントに HTTP 503 状態コードを返します。
[トラフィックの制限]、[リダイレクト]、および[転送]を設定した場合、QPS 制限内のリクエストは指定されたサーバーグループに転送されます。QPS が制限を超えた場合、ALB はリクエストを別のアドレスにリダイレクトします。
[トラフィックの制限]、[固定レスポンスの返却]、および[転送]を設定した場合、QPS 制限内のリクエストは指定されたサーバーグループに転送されます。QPS が制限を超えた場合、ALB は設定された固定レスポンスをクライアントに返します。
X-Forwarded-For リクエストヘッダーに複数の IP アドレスが含まれている場合、例えば
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …のように、一番左の IP アドレスが実際のクライアント IP です。ALB 転送ルールで[送信元 IP] の一致と[QPS (クライアント IP ごと)] の速度制限を使用するには、リスナーの[クライアント IP の取得]をオンにします。これにより、ALB は X-Forwarded-For ヘッダーから実際のクライアント IP を抽出できます。詳細については、「HTTP リスナーの追加」および「HTTPS リスナーの追加」をご参照ください。
[トラフィックのミラーリング]:リストからサーバーグループを選択します。サーバータイプまたはIP タイプのサーバーグループを選択できます。
[CORS]:オリジン間リソース共有 (CORS) は、リクエストされた URL のプロトコル、ドメイン名、またはポートが、返されたページの URL のそれと異なる場合に発生します。CORS リクエストには、単純リクエストとプリフライトリクエストが含まれます。
[信頼できるオリジン]:ブラウザを介してサービスリソースへのアクセスを許可する URL を指定します。
[許可されるメソッド]:オリジン間アクセスで許可される HTTP メソッドを選択します。有効な値:GET、POST、PUT、DELETE、HEAD、OPTIONS、およびPATCH。
[信頼できるリクエストヘッダー]:組み込みのブラウザヘッダー以外に CORS リクエストで許可される追加のヘッダーを指定します。
[信頼できるレスポンスヘッダー]:ブラウザまたは JavaScript がアクセスできるレスポンスヘッダーを指定します。
[信頼できる認証情報]:CORS リクエストで認証情報を許可するかどうかを指定します。有効な値:[許可] または [拒否]。デフォルト:[許可]。
[ブラウザのキャッシュ時間]:プリフライト OPTIONS リクエストがブラウザにキャッシュされる最大時間を秒単位で設定します。有効な値:-1〜172800。
レスポンス方向の転送ルール
パラメーター
説明
[名前]
ルールのカスタム名を入力します。名前を入力しない場合、システムが自動的に生成します。
転送ルールには 1 つの名前のみ指定できます。
[受信条件 (オプション)]
1 つ以上の受信転送条件を選択します。[+ 受信転送条件の追加] をクリックして、さらに条件を追加することもできます。これらの条件の設定方法の詳細については、「転送ルールの作成」をご参照ください。
[そして、次のレスポンス方向の条件を満たす]
レスポンス方向の転送条件を選択します。[+ レスポンス方向の転送条件の追加] をクリックして、複数の条件を追加できます。
[レスポンスステータスコード]:クライアントに返される HTTP 状態コードを指定します。有効な値:100〜599。
範囲を指定できます。複数のコードまたは範囲をカンマ (,) で区切ります。例:200-233,301。
[レスポンスヘッダー]:レスポンスに含まれる HTTP ヘッダーを指定します。[キー] フィールドに HTTP ヘッダー名を入力し、[値] フィールドに HTTP ヘッダー値を入力します。複数のヘッダーを追加できます。
[転送操作]
送信操作を選択します。[+ 操作の追加] をクリックして、さらに送信操作を追加できます。
[固定レスポンスの返却]:[レスポンスステータスコード] を入力し、[レスポンスコンテンツタイプ] を選択して[レスポンスコンテンツ] を入力します。レスポンスステータスコードは、2xx、4xx、または 5xx の形式の数値文字列である必要があります。ここで x は任意の数字です。
[ヘッダーの追加]:ヘッダーのキーと値を入力します。これにより、同じキーを持つ既存のヘッダーが上書きされます。
[ヘッダーの削除]:削除するヘッダーキーを入力します。これにより、キーとその関連する値の両方が削除されます。
説明送信の[ヘッダーの追加]または[ヘッダーの削除]操作には、次のヘッダーキーを使用できません (大文字と小文字を区別しない):
connection、upgrade、content-length、およびtransfer-encoding。
AScript を使用したスクリプトの作成
[+ 転送ルール適用後にスクリプトを追加] をクリックして、AScript 転送ルールを追加できます。詳細については、「ステップ 2:転送ルールをカスタマイズするためのスクリプトの作成」をご参照ください。
説明Standard エディションおよび WAF 有効化エディションの ALB インスタンスのみが AScript をサポートします。Basic エディションの ALB インスタンスは AScript をサポートしません。
その他の操作
転送ルールの編集、削除、または優先度の変更は、サービス トラフィックに影響を与える可能性があります。これらの操作はオフピーク時に実行してください。サービスの中断を避けるために、すべての変更を十分に評価し、テストすることを推奨します。
転送ルールの編集
ALB コンソールにログインします。
トップナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、管理するインスタンスの ID をクリックします。
「リスナー」タブをクリックし、管理するリスナーを見つけ、次に「操作」列の「転送ルールの表示/変更」をクリックします。
[転送ルール]タブで、[インバウンド転送ルール]または[アウトバウンド転送ルール]をクリックし、編集するルールを見つけて、右上隅の[編集]をクリックします。
変更を加えた後、[保存] をクリックします。
転送ルールの優先度の更新
転送ルールは、優先度に基づいて、高いものから低いものへと照合されます。数値が小さいほど、優先度が高くなります。デフォルト以外のルールの優先度はいつでも変更できます。デフォルトルールの優先度は変更できません。
ALB コンソールにログインします。
トップナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
「[インスタンス]」ページで、管理するインスタンスの ID をクリックします。
[リスナー] タブをクリックし、管理するリスナーを見つけ、次に [転送ルールの表示/変更] を [操作] 列でクリックします。
[転送ルール] タブで、[インバウンド転送ルール] または [アウトバウンド転送ルール] を選択し、ターゲットの転送ルールを目的の位置までドラッグし、[優先度の変更を保存] をクリックします。
転送ルールの削除
デフォルト以外の転送ルールはいつでも削除できます。デフォルトの転送ルールは削除できません。リスナーを削除すると、そのすべての転送ルールも削除されます。
ALB コンソールにログインします。
トップナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
[インスタンス]ページで、管理するインスタンスの ID をクリックします。
[リスナー] タブをクリックし、管理するリスナーを検索してから、[転送ルールの表示/変更] を [操作] 列でクリックします。
[転送ルール] タブで、[インバウンド転送ルール] または [アウトバウンド転送ルール] をクリックし、削除する転送ルールを選択して、[削除] をクリックします。
表示されるメッセージで、[OK] をクリックします。
参考文献
ユーザーガイド
転送条件におけるドメイン名とパスの設定ルール、および再書き込みとリダイレクト操作の拡張パス設定ルールの詳細については、「ドメイン名とパスの転送ルールの設定」をご参照ください。
ALB リスナーの転送ルールは、以下のシナリオをサポートしています:
ALB を使用して HTTP アクセスを HTTPS にリダイレクトする:ALB リスナーの転送ルールを使用して、HTTP リクエストを HTTPS にリダイレクトできます。これにより、転送中のデータが暗号化され、中間者攻撃やデータ漏洩を防ぎ、現代のセキュリティ基準に準拠したネットワークアーキテクチャを構築するのに役立ちます。
本番トラフィックをステージング環境にミラーリングする:ALB のトラフィックミラーリング機能を使用して、本番トラフィックをステージング環境のバックエンドサーバーにミラーリングしてテストできます。ALB は、ビジネスへの影響を防ぐために、テスト用のバックエンドサーバーからのレスポンスを自動的に破棄します。
ALB を使用してカナリアリリースを実装する:ALB リスナーに対して、条件ベースまたはサーバーグループの重みベースの転送ルールを設定して、リクエストの一部を新しいアプリケーションバージョンにルーティングできます。これにより、新しいバージョンの安定性を検証できます。
API リファレンス
CreateRule:転送ルールを作成します。
CreateRules:複数の転送ルールをバッチで作成します。
DeleteRule:転送ルールを削除します。
DeleteRules:複数の転送ルールをバッチで削除します。
ListRules:転送ルールを照会します。
UpdateRuleAttribute:転送ルールの属性を更新します。
UpdateRulesAttribute:複数の転送ルールの属性をバッチで更新します。