本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 API Gateway 中設定區域自訂網域名稱
使用區域自訂網域名稱來建立易於使用API的基礎 URL。使用區域自訂網域名稱,您可以將 HTTP和 REST API 階段映射至相同的自訂網域名稱,並使用相互TLS身分驗證。
考量事項
以下是區域自訂網域名稱的考量事項。
-
您必須提供區域特定的ACM憑證。此憑證必須與 位於相同的 區域中API。如需建立或上傳自訂網域名稱憑證的詳細資訊,請參閱「在 中備妥憑證 AWS Certificate Manager」。
-
當您使用ACM憑證建立區域自訂網域名稱 (或遷移名稱) 時,APIGateway 會在您的帳戶中建立服務連結角色。需要服務連結角色,才能將ACM憑證連接至區域端點。角色已命名AWSServiceRoleForAPIGateway並將連接受APIGatewayServiceRolePolicy管政策。如需使用服務連結角色的詳細資訊,請參閱使用服務連結角色。
-
建立區域自訂網域名稱之後,您必須建立「A」類型DNS記錄,以將自訂網域名稱指向區域網域名稱。這可讓繫結至自訂網域名稱的流量路由至 API的區域主機名稱。
建立區域自訂網域名稱
下列程序說明如何建立區域自訂網域名稱。完成此程序後,您必須建立DNS記錄,以將自訂網域名稱指向區域網域名稱。
- AWS Management Console
-
- AWS CLI
-
下列create-domain-name命令可用來建立自訂網域名稱:
aws apigatewayv2 create-domain-name \
--domain-name 'regional.example.com' \
--domain-name-configurations CertificateArn=arn:aws:acm:us-west-2
:123456789012
:certificate/123456789012-1234-1234-1234-12345678
如果成功,呼叫會傳回類似如下的結果:
{
"ApiMappingSelectionExpression": "$request.basepath",
"DomainName": "regional.example.com",
"DomainNameConfigurations": [
{
"ApiGatewayDomainName": "d-numh1z56v6.execute-api.us-west-2.amazonaws.com",
"CertificateArn": "arn:aws:acm:us-west-2:123456789012
:certificate/123456789012-1234-1234-1234-12345678
",
"DomainNameStatus": "AVAILABLE",
"EndpointType": "REGIONAL",
"HostedZoneId": "Z2OJLYMUO9EFXC",
"SecurityPolicy": "TLS_1_2"
}
]
}
DomainNameConfigurations
屬性值會傳回區域 API的主機名稱。您必須建立DNS記錄,以將自訂網域名稱指向此區域網域名稱。這可讓繫結至自訂網域名稱的流量路由至此區域 API的主機名稱。
為您的區域自訂網域名稱建立DNS記錄
下列程序說明如何建立DNS記錄,以指向新建立的區域網域名稱的自訂網域名稱。
- AWS Management Console
若要使用 AWS Management Console,請遵循 Route 53 文件設定 Route 53 將流量路由至 API Gateway 。
- AWS CLI
若要設定您的DNS記錄以將區域自訂網域名稱映射至指定託管區域 ID 的主機名稱,請先建立包含設定區域網域名稱DNS記錄組態JSON的檔案。
下列setup-dns-record.json
顯示如何建立DNSA
記錄,以將區域自訂網域名稱 (regional.example.com
) 映射至佈建為自訂網域名稱建立一部分的區域主機名稱 (d-numh1z56v6.execute-api.us-west-2.amazonaws.com
)。DNSName
的 HostedZoneId
與 AliasTarget
屬性可分別接受自訂網域名稱的 regionalDomainName
與 regionalHostedZoneId
值。您也可以在 Amazon API Gateway Endpoints 和 Quotas IDs中取得 Regional Route 53 Hosted Zone。
{
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "regional.example.com",
"Type": "A",
"AliasTarget": {
"DNSName": "d-numh1z56v6.execute-api.us-west-2.amazonaws.com",
"HostedZoneId": "Z2OJLYMUO9EFXC",
"EvaluateTargetHealth": false
}
}
}
]
}
以下change-resource-record-sets說明如何為您的區域自訂網域名稱建立DNS記錄:
aws route53 change-resource-record-sets \
--hosted-zone-id Z2OJLYMUO9EFXC \
--change-batch file://path/to/your/setup-dns-record.json
將 hosted-zone-id
取代為帳戶中DNS記錄集的 Route 53 Hosted Zone ID。change-batch
參數值指向JSON檔案 (setup-dns-record.json
) 在 資料夾中 (path/to/your
).
為您的區域自訂網域名稱建立基礎路徑映射
建立DNS記錄後,您可以建立基本路徑映射,將 映射API到自訂網域名稱。例如,您可以使用 test
的映射金鑰,將 API ID 的階段regional.example.com
API映射abc123
至自訂網域名稱myApi
。這會將 映射APIhttps://abcd1234.execute-api.us-west-2.amazonaws.com/test
到 https://regional.example.com/myApi
。
- AWS Management Console
-
- AWS CLI
下列create-api-mapping命令可用來建立基礎路徑映射:
aws apigatewayv2 create-api-mapping \
--domain-name 'regional.example.com' \
--api-mapping-key 'myApi' \
--api-id abcd1234 \
--stage 'test'
因此,在階段中部署的 URL使用自訂網域名稱API的 基礎會變成 https://regional.example.com/myAPI
。
使用區域自訂網域名稱,您可以建立具有多個層級的API映射,例如 https://regional.example.com/orders/v1/items/123
。您也可以將 HTTP和 REST API 階段映射至相同的自訂網域名稱。如需詳細資訊,請參閱將API階段映射至 的自訂網域名稱 REST APIs。