本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為您的自訂網域名稱設定路由模式
您可以選擇哪個路由模式 API Gateway 用來將流量路由到您的 APIs。如需詳細資訊,請參閱透過 APIs中的自訂網域名稱,將流量傳送至您的 API。本節討論自訂網域名稱的路由模式。您必須為自訂網域名稱設定路由模式,將流量路由到您的 APIs。支援下列路由模式:
-
ROUTING_RULE_THEN_API_MAPPING – 使用此模式將流量傳送至具有路由規則和 APIs 映射的 API。在此模式中,所有路由規則會優先於任何 API 映射。如需此模式的範例,請參閱 範例 2:路由規則和 API 映射。
-
ROUTING_RULE_ONLY – 使用此模式僅允許路由規則將流量傳送至您的 APIs。當您的自訂網域名稱使用此模式時,您無法建立 API 映射,但您可以使用 get-api-mappings 命令來檢視它們。API 呼叫者無法使用 API 映射來存取此網域名稱。
-
API_MAPPING_ONLY – 使用此模式只允許 API 映射將流量傳送到您的 APIs。當您的自訂網域名稱使用此模式時,您無法建立路由規則,但您可以使用 list-routing-rules
命令來檢視它們。API 呼叫者無法使用路由規則來存取此網域名稱。
這是所有現有網域名稱以及您建立的任何新網域名稱的預設路由模式。
當您使用 建立自訂網域名稱時apigateway
, API_MAPPING_ONLY
稱為 BASE_PATH_MAPPING_ONLY
,而 ROUTING_RULE_THEN_API_MAPPING
稱為 ROUTING_RULE_THEN_BASE_PATH_MAPPING
。此行為僅適用於 AWS CLI AWS CloudFormation或任何 SDKs,而不是在 中 AWS Management Console。
下列程序說明如何變更現有自訂網域名稱的路由模式。當您變更自訂網域名稱的路由模式時,API 呼叫者無法使用任何不支援的路由模式來存取您的網域名稱。
- AWS Management Console
-
如果您將路由模式變更為 ROUTING_RULE_ONLY
或 API_MAPPING_ONLY
,您建立的任何 API 映射或路由規則都會從主控台的網域名稱詳細資訊頁面中移除。如果您變更路由模式以支援路由規則或 API 映射,則會傳回這些資源。
- AWS CLI - apigatewayv2
-
下列 update-domain-name 命令會更新網域名稱,以使用路由模式 ROUTING_RULE_THEN_API_MAPPING
:
aws apigatewayv2 update-domain-name \
--domain-name 'api.example.com' \
--routing-mode "ROUTING_RULE_THEN_API_MAPPING"
輸出將如下所示:
{
"ApiMappingSelectionExpression": "$request.basepath",
"DomainName": "api.example.com",
"DomainNameArn": "arn:aws:apigateway:us-west-2::/domainnames/api.example.com",
"DomainNameConfigurations": [
{
"ApiGatewayDomainName": "d-abcdefg.execute-api.us-west-2.amazonaws.com",
"CertificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/abcdefg-123456-abcdefg",
"DomainNameStatus": "AVAILABLE",
"EndpointType": "REGIONAL",
"HostedZoneId": "Z2OJLYMUO9EFXC",
"SecurityPolicy": "TLS_1_2"
}
],
"RoutingMode": "ROUTING_RULE_THEN_API_MAPPING",
"Tags": {}
}
- AWS CLI - apigateway
-
下列 update-domain-name 命令會更新私有自訂網域名稱,以使用路由模式 ROUTING_RULE_THEN_BASE_PATH_MAPPING
:
aws apigateway update-domain-name \
--domain-name 'private.example.com' \
--patch-operations "op='replace',path='/routingMode',value='ROUTING_RULE_THEN_BASE_PATH_MAPPING'"
輸出將如下所示:
{
"domainName": "private.example.com",
"domainNameId": "abcd1234",
"domainNameArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234",
"certificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/a1b2c3d4-5678-90ab-cdef",
"certificateUploadDate": "2024-09-10T10:31:20-07:00",
"endpointConfiguration": {
"types": [
"PRIVATE"
],
"ipAddressType": "dualstack"
},
"domainNameStatus": "AVAILABLE",
"securityPolicy": "TLS_1_2",
"policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource\":\"execute-api:\/*\"},{\"Effect\":\"Deny\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource\":\""execute-api:\/*\",\"Condition\":{\"StringNotEquals\":{\"aws:SourceVpce\":\"vpce-abcd1234efg\"}}}]}",
"routingMode" : "ROUTING_RULE_THEN_BASE_PATH_MAPPING"
}