本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用路由規則重新建立 API 映射
您可以使用路由規則重新建立 API 映射。若要重新建立 API 映射,請務必開啟基本路徑分割。這會保留 API 映射的行為。如需詳細資訊,請參閱使用基本路徑條件來分割基本路徑。
下列教學課程說明如何將 API 映射重新建立https://
為路由規則,以及如何更新您的存取日誌以記錄路由規則 ID API Gateway 用來將流量傳送至 API。api.example.com
/orders/v2/items/categories/5
- AWS Management Console
-
將路由模式設定為 ROUTING_RULE_THEN_API_MAPPING
在以下網址登入 API Gateway 主控台:https://console.aws.amazon.com/apigateway
。 從主要導覽窗格中,選擇 Custom Domain Names (自訂網域名稱)。
-
選擇您的自訂網域名稱。
-
如需網域詳細資訊,請選擇編輯。
-
針對路由模式,選擇 ROUTING_RULE_THEN_API_MAPPING。
-
選擇儲存
設定路由模式後,您可以建立路由規則。
建立路由規則
-
在路由詳細資訊索引標籤上,選擇新增路由規則。
-
選擇新增條件,然後選擇路徑。
-
對於路徑,輸入
orders/v2/items/categories/5
。 -
對於長條圖基本路徑,選擇作用中。
針對目標 API,選擇您的目標 API。
針對目標階段,選擇您的目標階段。
-
選擇下一步。
-
針對優先順序,輸入優先順序。
即使您保留現有的 API 映射,API Gateway 仍會一律使用新的路由規則,因為路由規則一律優先於 API 映射。
選擇儲存變更。
建立路由規則後,請更新階段的存取日誌格式或建立新的日誌,以確認 API Gateway 使用您的路由規則將流量傳送至您的 API。
更新您的存取日誌
在以下網址登入 API Gateway 主控台:https://console.aws.amazon.com/apigateway
。 選擇您的 API。
在主導覽窗格中,選擇階段。
針對日誌和追蹤,選擇編輯。
如果您沒有日誌群組,請參閱 在 API Gateway 中設定 REST API 的 CloudWatch 記錄功能。
將
$context.customDomain.routingRuleIdMatched
新增至您的日誌格式。此日誌群組會記錄 API Gateway 用來將流量傳送至 API 的路由規則 ID。如需詳細資訊,請參閱我無法得知 API Gateway 如何將流量傳送到我的 APIs。
選擇 Save (儲存)。
更新存取日誌後, 會叫用您的自訂網域名稱。以下是使用
https://
基本路徑 叫用自訂網域名稱的範例 curl 命令api.example.com
orders/v2/items/categories/5
。curl "https://
api.example.com
/orders/v2/items/categories/5"成功叫用自訂網域名稱後,請確認 CloudWatch Logs 顯示
routingRuleIdMatched
。若要了解如何使用 CloudWatch Logs 主控台檢視日誌群組,請參閱 在 CloudWatch 主控台中檢視 API Gateway 日誌事件。 - AWS CLI
-
-
使用下列 update-domain-name 命令來更新網域名稱
,以使用路由模式api.example.com
ROUTING_RULE_THEN_API_MAPPING
。aws apigatewayv2 update-domain-name \ --domain-name '
api.example.com
' \ --routing-mode ROUTING_RULE_THEN_API_MAPPING -
使用下列 create-routing-rule 命令來建立新的路由規則,以重新建立 API 映射
https://
。api.example.com
/orders/v2/items/categories/5aws apigatewayv2 create-routing-rule \ --domain-name '
api.example.com
' \ --priority 50 \ --conditions '[ { "MatchBasePaths": { "AnyOf": [ "orders/v2/items/categories/5" ] } } ]' \ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": true } } ]' -
使用下列 update-stage 命令來更新存取日誌格式以包含
$context.customDomain.routingRuleIdMatched
變數。此變數會記錄 API Gateway 用來將流量傳送到 API 的路由規則 ID。您可以使用此日誌來確認 API Gateway 使用您的路由規則將流量傳送到您的 API。如需詳細資訊,請參閱我無法得知 API Gateway 如何將流量傳送到我的 APIs。aws apigateway update-stage \ --rest-api-id
a1bc2c3
\ --stage-name prod \ --patch-operations "op=replace,path=/accessLogSettings/format,value='\$context.path \$context.customDomain.routingRuleIdMatched \$context.requestId \$context.extendedRequestId'"如果您沒有日誌群組,請參閱 在 API Gateway 中設定 REST API 的 CloudWatch 記錄功能。
-
使用下列範例 curl 命令,以基本路徑 叫用您的自訂網域名稱
orders/v2/items/categories/5
。curl "https://
api.example.com
/orders/v2/items/categories/5 -
使用下列 filter-log-events 命令,從包含路由規則 ID
access-log-group-orders
的日誌群組取得日誌事件abc123
。aws logs filter-log-events --log-group-name access-log-group-orders --filter-pattern abc123
這確認 API Gateway 使用路由規則將流量傳送到您的 API。
-