在 API Gateway 中设置区域自定义域名
您可以为区域 API 终端节点(对于 Amazon 区域)创建自定义域名。要创建自定义域名,您必须提供特定于区域的 ACM 证书。有关创建或上传自定义域名证书的更多信息,请参阅在 中准备好证书Amazon Certificate Manager。
重要
对于 API Gateway 区域自定义域名,您必须在与 API 相同的区域中请求或导入证书。
在您创建(或迁移)包含 ACM 证书的区域自定义域名时,如果不存在服务相关角色,API Gateway 会在您的账户中创建一个这样的角色。需要使用服务相关角色,才能将 ACM 证书附加到您的区域终端节点。该角色名为 AWSServiceRoleForAPIGateway,将对其附加 APIGatewayServiceRolePolicy 托管策略。有关使用服务相关角色的更多信息,请参阅使用服务相关角色。
重要
您必须创建将自定义域名指向区域域名的 DNS 记录。这使绑定到自定义域名的流量可以路由到 API 的区域主机名。DNS 记录可以是 CNAME 或“A”类型。
使用 API Gateway 控制台设置带 ACM 证书的区域自定义域名
要使用 API Gateway 控制台设置区域自定义域名,请使用以下过程。
使用 API Gateway 控制台设置区域自定义域名
通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway
。 -
从主导航窗格中选择 Custom domain names (自定义域名)。
-
选择创建。
-
对于 Domain name (域名),输入一个域名。
-
在“Configuration (配置)”下,选择 Regional (区域)。
-
选择最低 TLS 版本。
-
选择 ACM 证书。证书必须与 API 位于同一区域。
-
选择创建。
-
请按照配置 Route 53 以将流量路由到 API Gateway 的 Route 53 文档进行操作。
以下过程设置 API 映射,将您的自定义域名的路径映射到 API 阶段。
使用 API Gateway 控制台创建 API 映射名称
通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway
。 -
选择自定义域名。
-
选择 Configure API mappings (配置 API 映射)。
-
选择 Add new mapping (添加新映射)。
-
指定映射的 API、Stage (阶段) 和 Path (路径)。
-
选择保存。
要了解有关为自定义域设置基本路径映射的信息,请参阅配置 API 的基本路径映射,将自定义域名作为主机名。
使用 Amazon CLI 设置带 ACM 证书的区域自定义域名
要使用 Amazon CLI 为区域 API 设置自定义域名,请使用以下过程。
-
调用
create-domain-name
,并指定自定义域名和区域证书的 ARN。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
请注意,指定的证书来自
us-west-2
区域,在此示例中,我们假定底层 API 来自同一区域。如果成功,调用返回的结果类似于以下内容:
{ "ApiMappingSelectionExpression": "$request.basepath", "DomainName": "regional.example.com", "DomainNameConfigurations": [ { "ApiGatewayDomainName": "d-
id
.execute-api.us-west-2.amazonaws.com", "CertificateArn": "arn:aws:acm:us-west-2:123456789012
:certificate/id
", "DomainNameStatus": "AVAILABLE", "EndpointType": "REGIONAL", "HostedZoneId": "id
", "SecurityPolicy": "TLS_1_2" } ] }DomainNameConfigurations
属性值返回区域 API 的主机名。您必须创建将您的自定义域名指向此区域域名的 DNS 记录。这使指向自定义域名的流量可以路由到该区域 API 的主机名。 -
创建将自定义域名与区域域名进行关联的 DNS 记录。这使指向到自定义域名的请求可以路由到 API 的区域主机名。
-
添加基本路径映射,以在部署阶段 (例如
0qzs2sy7bh
) 在指定的自定义域名 (例如test
) 下公开指定的 API (例如regional.example.com
)。aws apigatewayv2 create-api-mapping \ --domain-name 'regional.example.com' \ --api-mapping-key 'myApi' \ --api-id 0qzs2sy7bh \ --stage 'test'
这样,在此阶段部署的使用 API 的自定义域名的基本 URL 会变为
https://regional.example.com/myAPI
。 -
配置 DNS 记录,以将区域自定义域名映射到给定的托管区域 ID 的主机名。首先创建一个 JSON 文件,其中包含为区域域名设置 DNS 记录的配置。以下示例显示了如何创建 DNS
A
记录,以将区域自定义域名 (regional.example.com
) 映射到在创建自定义域名时为其预配置的区域主机名 (d-numh1z56v6.execute-api.us-west-2.amazonaws.com
)。DNSName
的HostedZoneId
和AliasTarget
属性可分别采用自定义域名的regionalDomainName
和regionalHostedZoneId
值。您也可以在 Amazon API Gateway 终端节点和配额中获取区域 Route 53 托管区域 ID。{ "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 } } } ] }
-
运行以下 CLI 命令:
aws route53 change-resource-record-sets \ --hosted-zone-id
{your-hosted-zone-id}
\ --change-batch file://path/to/your/setup-dns-record.json
其中,
{your-hosted-zone-id}
是您账户中的 DNS 记录集的 Route 53 托管区域 ID。change-batch
参数值指向文件夹 (path/to/your
) 中的 JSON 文件 (setup-dns-record.json
)。