

# API Gateway 中公共 REST API 的自定义域名
<a name="how-to-custom-domains"></a>

*自定义域名* 是您可以提供给 API 用户的更简单、更直观的 URL。

部署 API 后，您（和您的客户）可以使用以下格式的默认基本 URL 调用 API：

```
https://api-id.execute-api.region.amazonaws.com/stage
```

其中 *api-id* 由 API Gateway 生成，*region* 是 AWS 区域，*stage* 由您在部署 API 时指定。

URL 的主机名部分（即 `api-id.execute-api.region.amazonaws.com`）是指 API 端点。默认 API 端点名称是随机生成的，难以重新调用，对用户不友好。

使用自定义域名，您可以设置 API 的主机名，并选择基本路径（例如 `myservice`）以将备用 URL 映射到 API。例如，一个更为用户友好的 API 基本 URL 可以变成：

```
https://api.example.com/myservice
```

**注意**  
有关私有 API 的自定义域名的更多信息，请参阅[API Gateway 中私有 API 的自定义域名](apigateway-private-custom-domains.md)。

## 注意事项
<a name="custom-domain-considerations"></a>

以下注意事项可能会影响您对自定义域名的使用：
+ 您可以禁用 API 的默认端点。客户端仍然可以连接到您的默认端点，但它们会收到 `403 Forbidden` 状态码。
+ 区域自定义域名可以与 REST API 和 HTTP API 相关联。您可以使用 [API Gateway 版本 2 API](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/api-reference.html) 为 REST API 创建和管理区域自定义域名。
+ 自定义域名跨所有 AWS 账户在一个区域内必须是唯一的。
+ 您可以在边缘优化端点和区域端点之间迁移自定义域名，但您无法将公共自定义域迁移到私有自定义域名。
+ 您必须创建或更新 DNS 提供程序的资源记录以映射到您的 API 端点。如果没有此类映射，针对自定义域名的 API 请求无法到达 API Gateway。
+ 您可以使用通配符证书，在不超过默认配额的情况下支持几乎无限数量的域名。有关更多信息，请参阅 [通配符自定义域名](#wildcard-custom-domain-names)。
+ 您可以为自定义域名选择安全策略。有关更多信息，请参阅 [选择针对 API Gateway 中自定义域的安全策略](apigateway-custom-domain-tls-version.md)。
+ 要配置具有多个级别的 API 映射，您必须使用区域自定义域名并使用 TLS 1.2 安全策略。

## 自定义域名的先决条件
<a name="how-to-custom-domains-prerequisites"></a>

以下是创建公共或私有自定义域名的先决条件。有关私有 API 的自定义域名的更多信息，请参阅[API Gateway 中私有 API 的自定义域名](apigateway-private-custom-domains.md)。

### 注册域名
<a name="custom-domain-names-register"></a>

您必须拥有已注册的 Internet 域名，以便为 API 设置自定义域名。您可以使用 [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/) 或使用您选择的第三方域注册商注册互联网域名。自定义域名可以是注册的互联网域的子域或根域（也称为“机构根网域”）名称。

域名必须遵循 [RFC 1035](https://tools.ietf.org/html/rfc1035#section-2.3.4) 规范，每个标签最多可以有 63 个八位字节，总共可以有 255 个八位字节。

### 为您的自定义域名配置证书
<a name="custom-domain-names-certificates"></a>

为 API 设置自定义域名之前，您必须先在 ACM 中准备好 SSL/TLS 证书。如果 ACM 在您要创建自定义域名的 AWS 区域中不可用，您必须将证书导入到该区域的 API Gateway。

要导入 SSL/TLS 证书，您必须针对自定义域名提供 PEM 格式的 SSL/TLS 证书文本、其私有密钥和证书链。

存储在 ACM 中的每个证书均由其 ARN 标识。如果拥有 ACM 颁发的证书，那么您就无需担心公开任何敏感的证书详细信息，如私有密钥。要针对域名使用 AWS 托管的证书，您只需参考其 ARN 即可。

如果您的应用程序使用证书固定（有时称为 SSL 固定）来固定 ACM 证书，则在 AWS 续订证书后，应用程序可能无法连接到您的域。有关更多信息，请参阅《AWS Certificate Manager 用户指南》**中的[证书固定问题](https://docs.aws.amazon.com/acm/latest/userguide/troubleshooting-pinning.html)。

## 通配符自定义域名
<a name="wildcard-custom-domain-names"></a>

使用通配符自定义域名，您可以在不超过[默认配额](limits.md)的情况下支持几乎无限数量的域名。例如，您可以为每位客户提供自己的域名 `customername.example.com`。

要创建通配符自定义域名，可以指定通配符 (`*`) 作为表示根域所有可能子域的自定义域的第一个子域。

例如，通配符自定义域名 `*.example.com` 生成 `a.example.com`、`b.example.com` 和 `c.example.com` 等子域。创建通配符自定义域名时，其所有子域名均按通配符域名的路由模式进行路由。要将子域路由到不同的 API，您可以执行以下任一操作：
+ 使用路由规则，通过 `Host` 标头将针对 `*.example.com` 的传入请求路由到不同的目标 REST API。有关更多信息，请参阅 [示例 4：通配符域名的路由规则](rest-api-routing-rules-examples.md#rest-api-routing-rules-examples-rule-for-wildcard-domains)。
+ 为您想要路由到不同端点的任何子域名创建域名。在单个 AWS 账户中，您可以同时具有 `*.example.com` 和 `a.example.com`。

您可以使用 `$context.domainName` 和 `$context.domainPrefix` 上下文变量来确定客户端用于调用 API 的域名。要了解有关上下文变量的更多信息，请参阅 [API Gateway 的用于数据转换的变量](api-gateway-mapping-template-reference.md)。

要创建通配符自定义域名，您必须提供已使用 DNS 或电子邮件验证方法验证的由 ACM 颁发的证书。

**注意**  
如果其他 AWS 账户已经创建了与通配符自定义域名冲突的自定义域名，则无法创建通配符自定义域名。例如，如果账户 A 已经创建了 `a.example.com`，则账户 B 无法创建通配符自定义域名 `*.example.com`。  
如果账户 A 和账户 B 共享拥有者，您可以联系 [AWS Support 中心](https://console.aws.amazon.com/support/home#/)请求例外。

## 自定义域名的后续步骤
<a name="how-to-custom-domains-next-steps"></a>

以下是自定义域名的后续步骤。

**后续步骤**
+ 要了解如何设置 SSL/TLS 证书，请参阅[在 AWS Certificate Manager 中准备好证书](how-to-specify-certificate-for-custom-domain-name.md)。
+ 要了解如何创建区域自定义域名，请参阅[在 API Gateway 中设置区域自定义域名](apigateway-regional-api-custom-domain-create.md)。
+ 要了解如何创建边缘优化的自定义域名，请参阅[为 API Gateway API 设置边缘优化的自定义域名](how-to-edge-optimized-custom-domain-name.md)。
+ 要了解如何在区域自定义域名和边缘优化的自定义域名之间迁移，请参阅[将自定义域名迁移至 API Gateway 中的其他 API 端点](apigateway-regional-api-custom-domain-migrate.md)。
+ 要了解如何将 API 阶段连接到自定义域名，请参阅[在 API Gateway 中通过自定义域名将流量发送到 API](rest-api-routing-mode.md)。
+ 要了解如何为自定义域名选择安全策略，请参阅[选择针对 API Gateway 中自定义域的安全策略](apigateway-custom-domain-tls-version.md)。
+ 要了解如何关闭自定义域名的默认端点，请参阅[禁用 REST API 的默认端点](rest-api-disable-default-endpoint.md)。
+ 要了解如何使用 Route 53 运行状况检查从 API Gateway API 控制 DNS 故障转移，请参阅[为 API Gateway API 配置针对 DNS 故障转移的自定义运行状况检查](dns-failover.md)。

如果这是您第一次创建自定义域名，我们建议您首先[在 AWS Certificate Manager 中准备好证书](how-to-specify-certificate-for-custom-domain-name.md)，以便指定您的证书，然后再[在 API Gateway 中设置区域自定义域名](apigateway-regional-api-custom-domain-create.md)，以便创建区域自定义域名。