ゲートウェイにルールを追加する
ゲートウェイルールを使用すると、ターゲットを再デプロイすることなく、トラフィックのルーティングを制御し、ゲートウェイのターゲット設定を上書きできます。ターゲットの動作を上書きする設定バンドルを作成し、ルールを使用して、どのバンドルバージョンがどのトラフィックに適用されるかを制御します。ルールは、リクエストパスまたは発信者 ID に基づいて、異なるターゲットへのリクエストのルーティングもサポートします。
ゲートウェイルールを使用して、次の目標を達成します。
-
A/B テストを通じて設定バンドルのバージョンを試す
-
デバッグ用に特定のプリンシパルを設定バンドルバージョンに固定する
-
リクエストパスまたは発信者 ID に基づいてトラフィックを特定のターゲットにルーティングする
-
すべてのトラフィックのデフォルト設定バンドルまたはターゲットを設定する
ゲートウェイルールの仕組み
各ゲートウェイルールには、次のコンポーネントが含まれています。
| コンポーネント | 説明 |
|---|---|
|
優先度 |
1~1,000,000 の整数。数値が低いほど優先順位が高いことを示します。各優先度値は、ゲートウェイ内で一意である必要があります。 |
|
Conditions (オプション) |
ルールがリクエストと一致するかどうかを決定する条件。条件のないルールは、すべてのトラフィックに一致するキャッチオールとして機能します。 |
|
アクション (必須) |
ルールが一致するときに実行するアクション。設定バンドルの上書き、特定のターゲットへのルーティング、またはその両方を行うことができます。 |
|
Description (オプション) |
ルールの目的に関するテキストの説明。 |
ルール解決
ゲートウェイは、ルールを昇順 (低い数値が優先) で評価します。ゲートウェイは、ファーストマッチセマンティクスを使用して各アクションタイプを個別に解決します。
次の表は、ゲートウェイがサンプルリクエストのルールを解決する方法を示しています。この例では、QA ロールは にリクエストを送信します/my-target-canary/chat。
| 優先度 | 条件 | アクション | リクエストと一致しますか? | 結果 |
|---|---|---|---|---|
|
100 |
QA ロール |
|
はい |
バージョン A |
|
200 |
パス |
|
はい |
|
|
1000000 |
なし (キャッチオール) |
|
はい |
両方のアクションタイプは既に解決されています。スキップされました。 |
最終結果: リクエストはバンドルバージョン A を使用し、 にルーティングしますmy-target-canary。
ヒント
優先度番号 (100、200、300 など) の間にギャップを残して、既存のルールの番号を変更せずに後でルールを挿入できるようにします。
条件
条件によって、ルールが一致するリクエストが決まります。ルールには最大 2 つの条件を設定できます。条件のないルールは、すべてのトラフィックに一致します。
ゲートウェイは、次の条件タイプをサポートしています。
- matchPrincipals
-
呼び出し元の IAM プリンシパルに基づいてリクエストを照合します。
anyOfリストには 1~100 個のエントリが含まれます。各エントリは、次のフィールドiamPrincipalを持つ を指定します。-
arn— 一致する IAM プリンシパル ARN。 -
operator(オプション) — 比較演算子。有効な値は、StringEquals(デフォルト) とStringLikeです。ワイルドカードマッチングStringLikeには を使用します。
-
- matchPaths
-
リクエストパスに基づいてリクエストを照合します。
anyOfリストには 1~10 個のエントリが含まれます。各エントリは 形式を使用する必要があります。 は/<targetName>/*ゲートウェイ上の既存の HTTP ターゲットの名前<targetName>と一致します。ターゲットはReady状態である必要があります。matchPaths条件は、HTTP ターゲットを持つゲートウェイでのみサポートされます。次の予約パスプレフィックスは使用できません:/mcp、/a2a、/responses、/converse、/.well-known。
条件評価ロジック
-
条件タイプ内: ゲートウェイは OR ロジックを使用します。リクエストは、
anyOfリスト内のエントリを満たす場合に一致します。 -
条件タイプ間: ゲートウェイは AND ロジックを使用します。ルールに
matchPrincipalsと の両方がある場合matchPaths、リクエストは各条件タイプから少なくとも 1 つのエントリと一致する必要があります。
アクション
アクションは、ルールが一致したときのゲートウェイの動作を定義します。ルールには最大 2 つのアクションを含めることができます。
ゲートウェイは、次のアクションタイプをサポートしています。
- 設定バンドルの上書き (
configurationBundle) -
一致するトラフィックに適用される設定バンドルを上書きします。
-
staticOverride— 一致するすべてのトラフィックを特定の設定バンドルバージョンに固定します。バンドル ARN とバージョン ID を指定します。 -
weightedOverride— 2 つの設定バンドルバージョン間でトラフィックを 分割します。trafficSplitリストには、合計が 100 の重みを持つエントリが 2 つだけ含まれている必要があります。設定バンドルは、ゲートウェイと同じアカウントに存在する必要があります。
-
- ターゲットルーティング (
routeToTarget) -
一致するトラフィックを特定のターゲットにルーティングします。ターゲットは HTTP プロトコルを使用し、
Ready状態である必要があります。-
staticRoute— 一致するすべてのトラフィックを名前で特定のターゲットに ルーティングします。 -
weightedRoute— 2 つのターゲット間でトラフィックを 分割します。trafficSplitリストには、合計が 100 の重みを持つエントリが 2 つだけ含まれている必要があります。トラフィック分割エントリ名は一意である必要があります。
-
制限
次の表に、ゲートウェイルールの制限を示します。
| [リソース] | 制限 |
|---|---|
|
ゲートウェイあたりのルール |
20 |
|
優先度の範囲 |
1~1,000,000 |
|
ルールあたりの最大条件 |
2 |
|
ルールあたりの最大アクション数 |
2 |
|
|
100 |
|
|
10 |
|
|
正確に 2 |
|
|
1~99 |