

AWS App Runner 不再向新客户开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [AWS App Runner 可用性变更](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 管理 App Runner 服务的自定义域名
<a name="manage-custom-domains"></a>

创建 AWS App Runner 服务时，App Runner 会为其分配一个域名。这是 App Runner 拥有的`awsapprunner.com`域中的一个子域名。您可以使用域名来访问您的服务中运行的 Web 应用程序。

**注意**  
[为了增强 App Runner 应用程序的安全性，*\*.awsapprunner.com* 域已在公共后缀列表 (PSL) 中注册。](https://publicsuffix.org/)为了进一步提高安全性，如果您需要在 App Runner 应用程序的默认域名中设置敏感 Cookie，我们建议您使用带`__Host-`前缀的 Cookie。这将有助于保护您的域，防范跨站点请求伪造 (CSRF) 攻击。要了解更多信息，请参阅 Mozilla 开发者网络中的 [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) 页面。

如果您拥有域名，则可以将其关联到您的 App Runner 服务。App Runner 验证您的新域名后，除了 App Runner 域之外，您还可以使用您的域名来访问您的应用程序。您最多可以关联五个自定义域名。

**注意**  
您可以选择添加域名的`www`子域名。但是，目前只有 API 支持此功能。App Runner 控制台不支持包含您的`www`域名的子域名。

**注意**  
AWS App Runner 不支持使用 Route 53 私有托管区域。私有托管区域可为 Amazon VPC 流量自定义域名解析。有关私有托管区域的更多信息，请参阅 Route 53 文档中的[使用私有托管区域](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html)。

## 将自定义域名与您的服务关联（链接）
<a name="manage-custom-domains.associate-custom-domain"></a>

将自定义域与服务关联时，必须将 CNAME 记录和 DNS 目标记录添加到您的 DNS 服务器。以下各节提供有关 CNAME 记录和 DNS 目标记录以及如何使用它们的信息。

**注意**  
如果您使用 Amazon Route 53 作为 DNS 提供商，App Runner 会自动为您的自定义域配置所需的证书验证和 DNS 记录，以链接到您的 App Runner 网络应用程序。当您使用 App Runner 控制台将自定义域名链接到您的服务时，就会发生这种情况。以下[管理自定义域名](#manage-custom-domains.manage)主题提供了更多信息。

### CNAME 记录
<a name="manage-custom-domains.cname-records"></a>

当您将自定义域与服务关联时，App Runner 会为您提供一组用于证书验证的证书验证记录。您必须将这些证书验证记录添加到您的域名系统 (DNS) 服务器。将 App Runner 提供的证书验证记录添加到您的 DNS 服务器。这样，App Runner 就可以验证您是否拥有或控制该域名。

**注意**  
要自动续订自定义域名证书，请确保不要从 DNS 服务器中删除证书验证记录。有关如何解决与证书续订相关的问题的信息，请参阅[续订自定义域名证书](manage-custom-domain-troubleshoot.md#certificate-renewal.troubleshoot)。

App Runner 使用 ACM 来验证域。如果您在 DNS 记录中使用 CAA 记录，请确保至少有一条 CAA 记录引用。`amazon.com`否则，ACM 无法验证域名并成功创建您的域。

如果您收到与 CAA 相关的错误，请查看以下链接以了解如何解决这些错误：
+  [证书颁发机构授权 (CAA) 问题](https://docs.aws.amazon.com/acm/latest/userguide/troubleshooting-caa.html) 
+  [如何解决在颁发或续订 ACM 证书时出现的 CAA 错误？](https://aws.amazon.com/premiumsupport/knowledge-center/acm-troubleshoot-caa-errors/) 
+  [自定义域名](manage-custom-domain-troubleshoot.md) 

**注意**  
如果您使用 Amazon Route 53 作为 DNS 提供商，App Runner 会自动为您的自定义域配置所需的证书验证和 DNS 记录，以链接到您的 App Runner 网络应用程序。当您使用 App Runner 控制台将自定义域名链接到您的服务时，就会发生这种情况。以下[管理自定义域名](#manage-custom-domains.manage)主题提供了更多信息。

### DNS 目标记录
<a name="manage-custom-domains.DNS-target"></a>

将 DNS 目标记录添加到您的 DNS 服务器以定向 App Runner 域。如果您选择此选项，则为自定义域名添加一条记录，为`www`子域添加另一条记录。然后，在 App Runner 控制台中等待自定义域名状态变为 “**激活**”。这通常需要几分钟，但可能最多需要 24-48 小时（1—2 天）。当您的自定义域名通过验证后，App Runner 会开始将流量从该域路由到您的 Web 应用程序。

**注意**  
为了更好地兼容 App Runner 服务，我们建议您使用 Amazon Route 53 作为 DNS 提供商。如果您不使用 Amazon Route 53 来管理您的公有 DNS 记录，请联系您的 DNS 提供商以了解如何添加记录。  
如果您使用 Amazon Route 53 作为 DNS 提供商，则可以为*子*域名添加别名记录或别名记录。对于*根域*，请确保使用别名记录。

您可以从 Amazon Route 53 或其他提供商处购买域名。要使用亚马逊 Route 53 购买域名，请参阅亚马逊 R *oute 53 开发者指南*中的[注册新域名](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html)。

有关如何在 Route 53 中配置 DNS 目标的说明，请参阅 *Amazon Route 53 开发者指南*中的将[流量路由到您的资源](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-routing-traffic-to-resources.html)。

有关如何在其他注册商（例如 Shopify GoDaddy、Hover 等）上配置 DNS 目标的说明，请参阅他们关于添加 DNS 目标记录的特定文档。

### 指定要与 App Runner 服务关联的域
<a name="manage-custom-domains.specify-domain"></a>

您可以通过以下方式指定要与 App Runner 服务关联的域：
+ *根域* — DNS 有一些固有的限制，可能会阻止您为根域名创建 CNAME 记录。例如，如果您的域名是`example.com`，则可以创建别名记录，将流量路由`acme.example.com`到您的 App Runner 服务。但是，您无法创建将流量路由`example.com`到您的 App Runner 服务的别名记录。要创建根域，请确保添加别名记录。

  别名记录特定于 Route 53，与 CNAME 记录相比，它具有以下优点：
  +  Route 53 为您提供了更大的灵活性，因为可以为根域或子域创建别名记录。例如，如果您的域名是`example.com`，则可以创建一条记录，将请求路由`acme.example.com`到您的 `example.com` App Runner 服务。
  +  它更具成本效益。这是因为 Route 53 不对使用别名记录路由流量的请求收费。
+ *子域名*-例如，`login.example.com`或`admin.login.example.com`。您也可以选择将`www`子域关联为同一操作的一部分。您可以为子域名添加 CNAME 或别名记录。
+ *通配符*-例如，`*.example.com`。在这种情况下，您不能使用该`www`选项。您只能将通配符指定为根域名的直接子域，并且只能将其指定为根域名的直接子域。这些不是有效的规范：`login*.example.com`，`*.login.example.com`。此通配符规范将所有直接子域名关联起来，并且不关联根域名本身。根域必须通过单独的操作进行关联。

更具体的域关联会覆盖不太具体的域名关联。例如，`login.example.com`覆盖`*.example.com`。使用更具体的协会的证书和别名记录。

以下示例显示了如何使用多个自定义域名关联：

1. `example.com`与您的服务的主页关联。启用`www`以进行关联`www.example.com`。

1. `login.example.com`与您的服务的登录页面关联。

1. `*.example.com`与自定义 “未找到” 页面关联。

## 取消关联（取消关联）自定义域名
<a name="manage-custom-domains.disassociate-custom-domain"></a>

您可以取消自定义域名与 App Runner 服务的关联（取消关联）。当您取消链接某个域时，App Runner 会停止将流量从该域路由到您的 Web 应用程序。

**注意**  
您必须删除与 DNS 服务器取消关联的域的记录。

App Runner 在内部创建用于跟踪域有效性的证书。这些证书存储在 AWS Certificate Manager (ACM) 中。App Runner 不会在域名与您的服务解除关联后的 7 天内或服务被删除后的 7 天内删除这些证书。

## 管理自定义域名
<a name="manage-custom-domains.manage"></a>

使用以下方法之一管理您的 App Runner 服务的自定义域名：

**注意**  
为了更好地兼容 App Runner 服务，我们建议您使用 Amazon Route 53 作为 DNS 提供商。如果您不使用 Amazon Route 53 来管理您的公有 DNS 记录，请联系您的 DNS 提供商以了解如何添加记录。  
如果您使用 Amazon Route 53 作为 DNS 提供商，则可以为*子*域名添加别名记录或别名记录。对于*根域*，请确保使用别名记录。

------
#### [ App Runner console ]

**使用 App Runner 控制台关联（链接）自定义域**

1. 打开 [App Runner 控制台](https://console.aws.amazon.com/apprunner)，然后在 “**区域**” 列表中，选择您的 AWS 区域。

1. 在导航窗格中，选择**服务**，然后选择您的 App Runner 服务。

   控制台显示带有服务**概述的服务**仪表板。  
![显示活动列表的 App Runner 服务仪表板页面](http://docs.aws.amazon.com/zh_cn/apprunner/latest/dg/images/console-dashboard.png)

1. 在服务控制面板页面上，选择**自定义域名**选项卡。

   控制台显示与您的服务关联的自定义域名，或者**不显示自定义域名**。  
![App Runner 服务控制面板页面上的自定义域名选项卡，未显示任何关联的自定义域名](http://docs.aws.amazon.com/zh_cn/apprunner/latest/dg/images/service-dashboad-domains-empty.png)  
![App Runner 服务控制面板页面上的自定义域名选项卡，显示一个待关联的自定义域。](http://docs.aws.amazon.com/zh_cn/apprunner/latest/dg/images/service-dashboad-domains-one-pending.png)

1. 在**自定义域名**选项卡上，选择**关联域名**。

1. 将显示 “**链接自定义域名**” 页面。
   + 如果您的自定义域名是在亚马逊 Route 53 上注册的，请为**域名注册商**选择**亚马逊 Route 53**。

     1. 从下拉列表中选择**域名**。此列表显示您的 Route 53 域名的名称和托管区域 ID。
**注意**  
您必须首先使用与管理其他 App Runner 资源相同的 AWS 账户，使用亚马逊 Route 53 服务创建 Route 53 域。

     1. 选择 D **NS 记录类型**。

     1. 选择**链接域名**。  
![链接自定义域名页面，将 Amazon Route 53 显示为所选域名提供商。](http://docs.aws.amazon.com/zh_cn/apprunner/latest/dg/images/service-domains-link-r53.png)
**注意**  
如果 App Runner 显示错误消息，指出自动配置尝试失败，则可以继续手动配置 DNS 记录。如果以前取消了同一个域名与服务的关联，但没有指向该服务之后被删除的 DNS 提供商记录，则可能会出现此问题。在这种情况下，App Runner 被禁止自动覆盖这些记录。要完成 DNS 配置，请跳过此过程中的其余步骤，然后按照中的说明进行操作[配置 Amazon Route 53 别名记录](manage-custom-domains-route53.md)。
   + 如果您的自定义域名是在其他域名注册商处注册的，请为**域**名注册商选择**非—亚马逊**。

     1. 输入**域名**。

     1.  选择**链接域名**。  
![链接自定义域名页面，显示所选域名提供商为非亚马逊。](http://docs.aws.amazon.com/zh_cn/apprunner/latest/dg/images/service-domains-link-non-amzn.png)

1. 将显示 “**配置 DNS**” 页面。
   + 如果 Amazon Route 53 是您的 DNS 提供商，则此步骤是可选的。

     此时，App Runner 已自动为你的 Route 53 域配置了所需的证书验证和 DNS 记录。
**注意**  
如果此前未将同一个域名与服务取消链接，但之后没有指向该服务删除的 DNS 提供商记录，那么 App Runner 尝试的自动配置可能会失败。要解决此问题并完成 DNS 关联，请继续执行 “**配置 DNS**” 页面上的步骤 **(1)** **和 (2)**，将当前目标和证书记录复制到 DNS 提供商。

     1. 复制证书验证记录和 DNS 目标记录，并将它们添加到您的 DNS 服务器。然后，App Runner 可以验证您是否拥有或控制该域名。
**注意**  
要自动续订您的自定义域名证书，请确保不要从 DNS 服务器上删除证书验证记录。
       +  有关**配置证书验证**的更多信息，请参阅《*[AWS Certificate Manager 用户指南》](https://docs.aws.amazon.com/acm/latest/userguide/)*中的 [DNS 验证](https://docs.aws.amazon.com/acm/latest/userguide/dns-validation.html)。
       +  有关如何**使用 Amazon Route 53 别名记录配置 DNS 目标**的信息，请参阅[为您的目标 DNS 配置 Amazon Route 53 别名记录](manage-custom-domains-route53.md)。
   + 如果您使用的是 Amazon Route 53 以外的 DNS 提供商，请按照以下步骤操作。

     1. 复制证书验证记录和 DNS 目标记录，并将它们添加到您的 DNS 服务器。然后，App Runner 可以验证您是否拥有或控制该域名。
**注意**  
要自动续订您的自定义域名证书，请确保不要从 DNS 服务器上删除证书验证记录。
       +  有关**配置证书验证**的更多信息，请参阅《*[AWS Certificate Manager 用户指南》](https://docs.aws.amazon.com/acm/latest/userguide/)*中的 [DNS 验证](https://docs.aws.amazon.com/acm/latest/userguide/dns-validation.html)。
       + 有关如何在其他注册商（例如 Shopify GoDaddy、Hover 等）上配置 DNS 目标的说明，请参阅他们关于添加 DNS 目标的特定文档。  
![配置 DNS 页面，显示要添加到您的 DNS 的证书验证和 DNS 目标记录。](http://docs.aws.amazon.com/zh_cn/apprunner/latest/dg/images/custom-domain-configure.png)

1. 选择 “**关闭**”

   控制台再次显示仪表板。**自定义域名**选项卡上有一个新磁贴，显示您刚刚关联的域名处于 “**待处理证书 DNS 验证**” 状态。  
![App Runner 服务控制面板页面上的自定义域名选项卡，其中显示了自定义域名磁贴](http://docs.aws.amazon.com/zh_cn/apprunner/latest/dg/images/service-dashboad-domains-tile.png)

1. 当域状态更改为 “**活动**” 时，请通过浏览该域来验证该域是否可以路由流量。  
![App Runner 服务控制面板页面上的自定义域名选项卡，其中显示了自定义域名磁贴](http://docs.aws.amazon.com/zh_cn/apprunner/latest/dg/images/service-dashboad-domains-tile-active.png)

**注意**  
有关如何解决与自定义域名相关的错误的说明，请参阅[自定义域名](manage-custom-domain-troubleshoot.md)。

**使用 App Runner 控制台取消关联（取消关联）自定义域**

1. 在**自定义域名**选项卡上，选择要取消关联的域名的磁贴，然后选择**取消关联**域名。

1. 在 “**取消域名链接**” 对话框中，选择 “**取消链接**域” 以验证操作。
**注意**  
您必须删除与 DNS 服务器取消关联的域的记录。

------
#### [ App Runner API or AWS CLI ]

要使用 App Runner API 或将自定义网域与您的服务相关联 AWS CLI，请调用 [AssociateCustomDomain](https://docs.aws.amazon.com/apprunner/latest/api/API_AssociateCustomDomain.html)API 操作。调用成功后，将返回一个描述与您的服务关联的自定义域的[CustomDomain](https://docs.aws.amazon.com/apprunner/latest/api/API_CustomDomain.html)对象。该对象显示`CREATING`状态并包含[CertificateValidationRecord](https://docs.aws.amazon.com/apprunner/latest/api/API_CertificateValidationRecord.html)对象列表。该调用还会返回可用于配置 DNS 目标的目标别名。这些记录可以添加到您的 DNS 中。

要使用 App Runner API 取消自定义网域与您的服务的关联 AWS CLI，请调用 [DisassociateCustomDomain](https://docs.aws.amazon.com/apprunner/latest/api/API_DisassociateCustomDomain.html)API 操作。调用成功后，将返回一个[CustomDomain](https://docs.aws.amazon.com/apprunner/latest/api/API_CustomDomain.html)对象，该对象描述了与您的服务取消关联的自定义域。该对象显示`DELETING`状态。

------

**Topics**
+ [将自定义域名与您的服务关联（链接）](#manage-custom-domains.associate-custom-domain)
+ [取消关联（取消关联）自定义域名](#manage-custom-domains.disassociate-custom-domain)
+ [管理自定义域名](#manage-custom-domains.manage)
+ [为您的目标 DNS 配置 Amazon Route 53 别名记录](manage-custom-domains-route53.md)