如何使用路由規則 - Amazon API Gateway

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

如何使用路由規則

您可以使用 AWS Management Console AWS CLI或任何 AWS SDK 建立路由規則。建立規則之後,您可以變更規則的優先順序。

建立路由規則

下列程序說明如何為自訂網域名稱建立路由規則,並將路由模式設定為 ROUTING_RULE_THEN_API_MAPPINGROUTING_RULE_ONLY

AWS Management Console
  1. 在以下網址登入 API Gateway 主控台:https://console.aws.amazon.com/apigateway

  2. 從主要導覽窗格中,選擇 Custom Domain Names (自訂網域名稱)

  3. 選擇自訂網域名稱。

  4. 路由詳細資訊索引標籤上,選擇新增路由規則

  5. 選擇新增條件以新增條件。

    您可以新增標頭或基本路徑條件。若要將所有傳入請求比對至您的自訂網域名稱,請勿新增條件。

  6. 針對動作,使用下拉式清單選取您的目標 API 和目標階段。

  7. 選擇下一步

  8. 在優先順序欄位中,輸入優先順序的數字。

    API Gateway 會依優先順序評估規則,從最低值到最高值。

    如果您要建立沒有條件的規則,建議您使用高值優先順序。

  9. 選擇建立路由規則

AWS CLI

下列 create-routing-rule 命令會建立優先順序為 50 的路由規則。在此範例中,API Gateway 會將任何具有 標頭Hello:Worldx-version:beta以及基本路徑的傳入請求路由PetStoreShopper至目標 API a1b2c3

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
  1. 在以下網址登入 API Gateway 主控台:https://console.aws.amazon.com/apigateway

  2. 從主要導覽窗格中,選擇 Custom Domain Names (自訂網域名稱)

  3. 選擇自訂網域名稱。

  4. 路由詳細資訊索引標籤上,選擇您的路由規則,然後選擇編輯

  5. 選擇下一步

  6. 針對優先順序,輸入新的優先順序。

  7. 選擇儲存變更

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" }