API Gateway がルーティングルールを評価する方法の例 - Amazon API Gateway

API Gateway がルーティングルールを評価する方法の例

次のセクションでは、API Gateway がルーティングルールと API マッピングを評価する方法の 4 つの例を示します。

例 1: ルーティングルールのみ

この例では、カスタムドメイン名 https://petstore.example.com のルーティングモードは ROUTING_RULE_ONLY に設定され、次のルーティングルールと優先順位があります。

ルール ID 優先度 条件 アクション

abc123

10

リクエストにヘッダー Hello:World が含まれている場合

ターゲット API 1

zzz000

50

リクエストにヘッダー Accept:image/webpPet:Dog-* が含まれている場合、およびベースパスに PetStoreShopper が含まれている場合

ターゲット API 2

efg456

100

なし

ターゲット API 3

次の表は、API Gateway が前のルーティングルールをリクエスト例に適用する方法を示しています。

リクエスト 選択した API 説明

https://petstore.example.com -h "Hello:World"

ターゲット API 1

リクエストはルーティングルール abc123 と一致します。

https://petstore.example.com/PetStoreShopper -h "Hello:World", "Pet:Dog-Bella", "Accept:image/webp"

ターゲット API 1

API Gateway は、すべてのルーティングルールを優先度順に評価します。ルーティングルール abc123 が優先され、条件が一致するため、API Gateway はターゲット API 1 を呼び出します。

リクエストの条件もルーティングルール zzz000 と一致しますが、API Gateway は一致後に他のルーティングルールを評価しません。

https://petstore.example.com/PetStoreShopper -h "Pet:Dog-Bella", "Accept:image/webp"

ターゲット API 2

リクエストはルーティングルール zzz000 と一致します。Pet:Dog-BellaPet:Dog-* に一致する文字列であったため、これは一致でした。

https://petstore.example.com/PetStoreShopper -h "Pet:Dog-Bella"

ターゲット API 3

リクエストがルーティングルール abc123 と一致しません。必要なヘッダーがすべて存在しないため、リクエストがルーティングルール zzz000 と一致しません。次の優先度ルールはすべての受信リクエストに一致するため、API Gateway はターゲット API 3 を呼び出します。

例 2: ルーティングルールと API マッピング

この例では、カスタムドメイン名 https://petstore.diagram.example.com のルーティングモードは ROUTING_RULE_THEN_API_MAPPING に設定され、次のルーティングルールと API マッピングがあります。

ルール ID 優先度 条件 アクション

abc123

1

リクエストに pets が含まれている場合

PetStore API の Prod ステージを呼び出します。

000zzz

5

リクエストにヘッダー Cookie:*ux=beta* が含まれている場合、およびベースパスに /refunds が含まれている場合

Refunds API の Beta ステージを呼び出します。

次の表は、https://petstore.backup.example.com の API マッピングを示しています。

API マッピング 選択した API

/refunds

Refunds API の Prod ステージを呼び出します。

(none)

Search API の Prod ステージを呼び出します。

次の図は、API Gateway が前のルーティングルールと API マッピングをリクエスト例に適用する方法を示しています。リクエスト例は、この図の後に表にまとめられています。

API Gateway が以前のルーティングルールと API マッピングを適用する方法の図。

次の表は、API Gateway が前のルーティングルールと API マッピングをリクエスト例に適用する方法を示しています。

リクエスト 選択した API 説明

https://petstore.diagram.com/pets

PetStore API の Prod ステージ。

リクエストはルーティングルール abc123 と一致します。

https://petstore.diagram.example.com/refunds -h "Cookie:lang=en-us;ux=beta"

Beta API の Refunds ステージ。

リクエストはルーティングルール 000zzz と一致します。Cookie ヘッダーには、この条件の正しい *contains* 一致と基本パス一致が含まれています。

https://petstore.diagram.example.com/refunds

Prod API の Refunds ステージ。

リクエストには、ルーティングルール zzz000 と一致するために必要なヘッダーがありません。API Gateway がルーティングルールに正常に一致できない場合、API マッピングにフォールバックします。API Gateway は、ベースパスを Refunds API の Prod ステージにマッピングできます。

https://petstore.diagram.example.com/

Prod API の Search ステージ。

リクエストは API マッピングを空のパス (none) に一致させます。

例 3: 複数のレベルでのルーティングルールと API マッピング

この例では、カスタムドメイン名 https://petstore.backup.example.com のルーティングモードは ROUTING_RULE_THEN_API_MAPPING に設定され、次のルーティングルールと API マッピングがあります。

次の表は、https://petstore.backup.example.com のルーティングルールを示しています。

ルール ID 優先度 条件 アクション

abc123

10

リクエストにヘッダー Hello:World が含まれている場合

ターゲット API 1

000zzz

50

リクエストにヘッダー Accept:image/webpPet:Dog-* が含まれている場合、およびベースパスに PetStoreShopper が含まれている場合

ターゲット API 2

次の表は、https://petstore.backup.example.com の API マッピングを示しています。

API マッピング 選択した API

PetStoreShopper

ターゲット API 3

PetStoreShopper/cats

ターゲット API 4

次の表は、API Gateway が前のルーティングルールと API マッピングをリクエスト例に適用する方法を示しています。

リクエスト 選択した API 説明

https://petstore.example.com/PetStoreShopper -h "Accept:image/webp", "Pet:Cats"

ターゲット API 3

リクエストには、ルーティングルール zzz000 と一致するために必要なヘッダーがありません。API Gateway がルーティングルールに正常に一致できない場合、API マッピングにフォールバックします。API Gateway は、基本パスをターゲット API 3 にマッピングできます。

https://petstore.example.com/PetStoreShopper/cats -h "Hello:World"

ターゲット API 1

リクエストはルーティングルール abc123 と一致します。ルーティングモードが ROUTING_RULE_THEN_API_MAPPING に設定されている場合、ルーティングルールは常に API マッピングよりも優先されます。

https://petstore.example.com/Admin -h "Pet:Dog-Bella"

なし

リクエストがルーティングルールまたは API マッピングと一致しません。デフォルトのルーティングルールがないため、API Gateway は呼び出しを拒否し、発信者に 403 Forbidden ステータスコードを送信します。

例 4: ワイルドカードドメイン名のルーティングルール

この例では、カスタムドメイン名 https://*.example.com はワイルドカードドメイン名です。ワイルドカードは、同じドメインにルーティングバックするすべてのサブドメインをサポートします。次のルーティングルールの例では、この動作を変更して、Host ヘッダーを使用してサブドメインを異なるターゲット API にルーティングできるようにします。

次の表は、https://*.example.com のルーティングルールを示しています。

ルール ID 優先度 条件 アクション

abc123

10

リクエストにヘッダー Host:a.example.com が含まれている場合

ターゲット API 1

000zzz

50

リクエストにヘッダー Host:b.example.com が含まれている場合

ターゲット API 2

efg456

500

なし

ターゲット API 3

次の表は、API Gateway が前のルーティングルールをリクエスト例に適用する方法を示しています。

リクエスト 選択した API 説明

https://a.example.com

ターゲット API 1

Host ヘッダーは a.example.com です。このリクエストはルーティングルール abc123 と一致します。

https://b.example.com

ターゲット API 2

Host ヘッダーは b.example.com です。このリクエストはルーティングルール 000zzz と一致します。

https://testing.example.com

ターゲット API 3

これはキャッチオールルーティングルール efg456 と一致します。