本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
如何使用路由規則
您可以使用 AWS Management Console AWS CLI或任何 AWS SDK 建立路由規則。建立規則之後,您可以變更規則的優先順序。
建立路由規則
下列程序說明如何為自訂網域名稱建立路由規則,並將路由模式設定為 ROUTING_RULE_THEN_API_MAPPING
或 ROUTING_RULE_ONLY
。
- AWS Management Console
在以下網址登入 API Gateway 主控台:https://console.aws.amazon.com/apigateway
。 從主要導覽窗格中,選擇 Custom Domain Names (自訂網域名稱)。
-
選擇自訂網域名稱。
-
在路由詳細資訊索引標籤上,選擇新增路由規則。
-
選擇新增條件以新增條件。
您可以新增標頭或基本路徑條件。若要將所有傳入請求比對至您的自訂網域名稱,請勿新增條件。
針對動作,使用下拉式清單選取您的目標 API 和目標階段。
-
選擇下一步。
在優先順序欄位中,輸入優先順序的數字。
API Gateway 會依優先順序評估規則,從最低值到最高值。
如果您要建立沒有條件的規則,建議您使用高值優先順序。
選擇建立路由規則。
- AWS CLI
-
下列 create-routing-rule 命令會建立優先順序為 50 的路由規則。在此範例中,API Gateway 會將任何具有 標頭
Hello:World
和x-version:beta
以及基本路徑的傳入請求路由PetStoreShopper
至目標 APIa1b2c3
。aws apigatewayv2 create-routing-rule \ --domain-name 'api.example.com' \ --priority 50 \ --conditions '[ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ]'\ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod" } } ]'
輸出將如下所示:
{ "Actions": [ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": false } } ], "Conditions": [ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ], "Priority": 50, "RoutingRuleArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/api.example.com/routingrules/abc123", "RoutingRuleId": "abc123" }
變更路由規則的優先順序
您可以變更路由規則的優先順序。這會立即生效,並可能影響 API 消費者叫用您自訂網域名稱的方式。我們建議您在設定路由規則的優先順序時,在規則之間保留差距。
例如,請考慮兩個路由規則,優先順序abc123
為 50 的規則和優先順序zzz000
為 150 的規則。若要變更規則的優先順序,讓 API Gateway zzz000
先評估規則,您可以將規則的優先順序變更為 zzz000
30。
- AWS Management Console
-
在以下網址登入 API Gateway 主控台:https://console.aws.amazon.com/apigateway
。 從主要導覽窗格中,選擇 Custom Domain Names (自訂網域名稱)。
-
選擇自訂網域名稱。
-
在路由詳細資訊索引標籤上,選擇您的路由規則,然後選擇編輯。
-
選擇下一步。
-
針對優先順序,輸入新的優先順序。
選擇儲存變更。
- AWS CLI
-
下列 put-routing-rule 命令會變更路由規則 的優先順序
abc123
。aws apigatewayv2 put-routing-rule \ --domain-name 'api.example.com' \ --priority 30 \ --routing-rule-id abc123 \ --conditions '[ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ]'\ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod" } } ]'
輸出將如下所示:
{ "Actions": [ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": false } } ], "Conditions": [ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ], "Priority": 38, "RoutingRuleArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/api.example.com/routingrules/abc123", "RoutingRuleId": "abc123" }