在 API Gateway 中设置区域自定义域名 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 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 控制台设置区域自定义域名
  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 从主导航窗格中选择自定义域名

  3. 选择创建

  4. 对于域名,输入一个域名。

  5. 在“配置”下,选择区域

  6. 选择最低 TLS 版本。

  7. 选择 ACM 证书。证书必须与 API 位于同一区域。

  8. 选择创建

  9. 请按照配置 Route 53 以将流量路由到 API Gateway 的 Route 53 文档进行操作。

以下过程设置 API 映射,将您的自定义域名的路径映射到 API 阶段。

使用 API Gateway 控制台创建 API 映射
  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 选择自定义域名。

  3. 选择配置 API 映射

  4. 选择添加新映射

  5. 指定映射的 API阶段路径

  6. 选择保存

要了解有关为自定义域设置基本路径映射的信息,请参阅配置 API 的基本路径映射,将自定义域名作为主机名

使用 Amazon CLI 设置带 ACM 证书的区域自定义域名

要使用 Amazon CLI 为区域 API 设置自定义域名,请使用以下过程。

  1. 调用 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 的主机名。

  2. 创建将自定义域名与区域域名进行关联的 DNS 记录。这使指向到自定义域名的请求可以路由到 API 的区域主机名。

  3. 添加基本路径映射,以在部署阶段 (例如 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

  4. 配置 DNS 记录,以将区域自定义域名映射到给定的托管区域 ID 的主机名。首先创建一个 JSON 文件,其中包含为区域域名设置 DNS 记录的配置。以下示例显示了如何创建 DNS A 记录,以将区域自定义域名 (regional.example.com) 映射到在创建自定义域名时为其预配置的区域主机名 (d-numh1z56v6.execute-api.us-west-2.amazonaws.com)。DNSNameHostedZoneIdAliasTarget 属性可分别采用自定义域名的 regionalDomainNameregionalHostedZoneId 值。您也可以在 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 } } } ] }
  5. 运行以下 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)。