View a markdown version of this page

管理 App Runner 服务的自定义域名 - AWS App Runner

AWS App Runner 不再向新客户开放。现有客户可以继续正常使用该服务。有关更多信息,请参阅 AWS App Runner 可用性变更

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

管理 App Runner 服务的自定义域名

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

注意

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

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

注意

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

注意

AWS App Runner 不支持使用 Route 53 私有托管区域。私有托管区域为 Amazon VPC 流量自定义域名解析。有关私有托管区域的更多信息,请参阅 Route 53 文档中的使用私有托管区域。

将自定义域关联(链接)到您的服务

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

注意

如果您使用亚马逊 Route 53 作为 DNS 提供商,App Runner 会自动使用所需的证书验证和 DNS 记录配置您的自定义域,以链接到您的 App Runner 网络应用程序。当你使用 App Runner 控制台将自定义域名关联到服务时,就会发生这种情况。以下管理自定义域名主题提供了更多信息。

CNAME 记录

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

注意

要自动续订您的自定义域名证书,请确保不要从 DNS 服务器中删除证书验证记录。有关如何解决与证书续订相关的问题的信息,请参阅续订自定义域名证书

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

如果您收到与 CAA 相关的错误,请参阅以下链接以了解如何解决这些错误:

注意

如果您使用 Amazon Route 53 作为 DNS 提供商,App Runner 会自动使用所需的证书验证和 DNS 记录配置您的自定义域,以链接到您的 App Runner 网络应用程序。当你使用 App Runner 控制台将自定义域名关联到服务时,就会发生这种情况。以下管理自定义域名主题提供了更多信息。

DNS 目标记录

将 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 提供商以了解如何添加记录。

如果您使用亚马逊 Route 53 作为 DNS 提供商,则可以为域名添加 CNAME 或别名记录。对于根域,请确保使用别名记录。

您可以从亚马逊 Route 53 或其他提供商处购买域名。要使用亚马逊 Route 53 购买域名,请参阅亚马逊 Route 53 开发者指南中的注册新域名

有关如何在 Route 53 中配置 DNS 目标的说明,请参阅 Amazon Route 53 开发者指南中的将流量路由到您的资源

有关如何在其他注册商(例如 Shopify GoDaddy、Hover 等)上配置 DNS 目标的说明,请参阅他们关于添加 DNS 目标记录的具体文档。

指定要与您的 App Runner 服务关联的域

您可以通过以下方式指定与 App Runner 服务关联的域:

  • 根域 — DNS 有一些固有的限制,可能会阻止您为根域名创建 CNAME 记录。例如,如果您的域名是example.com,则可以创建 CNAME 记录,将流量路由acme.example.com到您的 App Runner 服务。但是,您无法创建 CNAME 记录来将流量路由example.com到您的 App Runner 服务。要创建根域,请确保添加别名记录。

    别名记录特定于 Route 53,与 CNAME 记录相比具有以下优点:

    • Route 53 为您提供了更大的灵活性,因为可以为根域或子域创建别名记录。例如,如果您的域名是example.com,则可以创建一条记录,将请求路由acme.example.com到您的 example.com App Runner 服务。

    • 它更具成本效益。这是因为 Route 53 不会对使用别名记录路由流量的请求收费。

  • 子域名 — 例如,login.example.comadmin.login.example.com。作为同一操作的一部分,您也可以选择关联www子域。您可以为子域名添加 CNAME 或别名记录。

  • 通配符 — 例如,*.example.com。在这种情况下,你不能使用该www选项。只能将通配符指定为根域的直接子域,并且只能单独指定。这些不是有效的规格:login*.example.com*.login.example.com。此通配符规范关联所有直接子域名,不关联根域本身。必须在单独的操作中关联根域。

更具体的域名关联会覆盖不太具体的域关联。例如,login.example.com覆盖*.example.com。使用更具体的关联的证书和 CNAME。

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

  1. example.com与您的服务主页关联。启用 “www关联www.example.com”。

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

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

取消关联(取消关联)自定义域

您可以取消自定义域与 App Runner 服务的关联(取消关联)。当您取消域名关联时,App Runner 会停止将流量从该域名路由到您的 Web 应用程序。

注意

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

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

管理自定义域名

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

注意

为了更好地与 App Runner 服务兼容,我们建议您使用 Amazon Route 53 作为 DNS 提供商。如果您不使用 Amazon Route 53 来管理您的公有 DNS 记录,请联系您的 DNS 提供商以了解如何添加记录。

如果您使用亚马逊 Route 53 作为 DNS 提供商,则可以为域名添加 CNAME 或别名记录。对于根域,请确保使用别名记录。

App Runner console
使用 App Runner 控制台关联(链接)自定义域
  1. 打开 App Runner 控制台,然后在区域列表中选择您的 AWS 区域。

  2. 在导航窗格中,选择服务,然后选择您的 App Runner 服务。

    控制台显示服务仪表板和服务概述

    显示活动列表的 App Runner 服务仪表板页面
  3. 在服务仪表板页面上,选择自定义域选项卡。

    控制台显示与您的服务关联的自定义域,或显示无自定义域

    App Runner 服务控制面板页面上的 “自定义域” 选项卡,不显示关联的自定义域
    App Runner 服务控制面板页面上的自定义域名选项卡,显示一个待关联的自定义域。
  4. 自定义域名选项卡上,选择关联域名

  5. 将显示 “链接自定义域” 页面。

    • 如果您的自定义域名是在亚马逊 Route 53 上注册的,请域名注册商选择亚马逊 Route 53。

      1. 从下拉列表中选择域名。此列表显示您的 Route 53 域名的名称和托管区域 ID。

        注意

        您必须先使用与管理其他 App Runner 资源相同的 AWS 账户使用 Amazon Route 53 服务创建 Route 53 域。

      2. 选择 DNS 记录类型

      3. 选择 “链接域”

      链接自定义域名页面,将 Amazon Route 53 显示为所选域名提供商。
      注意

      如果 App Runner 显示错误消息,指出自动配置尝试失败,则可以继续手动配置 DNS 记录。如果之前取消了同一个域名与服务的关联,但随后没有指向该服务的 DNS 提供商记录,则可能会出现此问题。在这种情况下,App Runner 被禁止自动覆盖这些记录。要完成 DNS 配置,请跳过此过程中的剩余步骤,然后按照中的说明进行操作配置 Amazon Route 53 别名记录

    • 如果您的自定义域名是在其他域名注册商处注册的,请域名注册商选择非亚马逊。

      1. 输入域名

      2. 选择 “链接域”

    链接自定义域名页面,显示所选域名提供商为非亚马逊。
  6. 将显示 “配置 DNS” 页面。

    • 如果 Amazon Route 53 是您的 DNS 提供商,则此步骤是可选的。

      此时,App Runner 已使用所需的证书验证和 DNS 记录自动配置您的 Route 53 网域。

      注意

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

      1. 复制证书验证记录和 DNS 目标记录,并将它们添加到您的 DNS 服务器。然后,App Runner 可以验证您是否拥有或控制该域。

        注意

        要自动续订您的自定义域名证书,请确保不要从 DNS 服务器删除证书验证记录。

    • 如果您使用的是亚马逊 Route 53 以外的 DNS 提供商,请按照以下步骤操作。

      1. 复制证书验证记录和 DNS 目标记录,并将它们添加到您的 DNS 服务器。然后,App Runner 可以验证您是否拥有或控制该域。

        注意

        要自动续订您的自定义域名证书,请确保不要从 DNS 服务器删除证书验证记录。

        • 有关配置证书验证的更多信息,请参阅《AWS Certificate Manager 用户指南》中的 DNS 验证

        • 有关如何在其他注册商(例如 Shopify GoDaddy、Hover 等)上配置 DNS 目标的说明,请参阅他们关于添加 DNS 目标的具体文档。

    配置 DNS 页面,显示证书验证和要添加到 DNS 的 DNS 目标记录。
  7. 选择 “关闭”

    控制台再次显示仪表板。自定义域名选项卡上有一个新图块,显示您刚刚链接的域名处于待处理证书 DNS 验证状态。

    App Runner 服务控制面板页面上的自定义域名选项卡,显示自定义域名图块
  8. 当域名状态更改为 “活跃” 时,通过浏览该域来验证该域是否可用于路由流量。

    App Runner 服务控制面板页面上的自定义域名选项卡,显示自定义域名图块
注意

有关如何解决与自定义域相关的错误的说明,请参阅自定义域名

使用 App Runner 控制台取消关联(取消关联)自定义域
  1. 自定义域名选项卡上,选择要取消关联的域名的图块,然后选择取消关联域。

  2. 在 “取消关联域” 对话框中,选择 “取消关联域” 以验证操作。

    注意

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

App Runner API or AWS CLI

要使用 App Runner API 将自定义域名与您的服务关联起来 AWS CLI,或调用 AssociateCustomDomain API 操作。调用成功后,将返回一个描述与您的服务关联的自定义域的CustomDomain对象。该对象显示CREATING状态并包含CertificateValidationRecord对象列表。该调用还会返回目标别名,您可以使用该别名配置 DNS 目标。您可以将这些记录添加到 DNS 中。

要使用 App Runner API 取消自定义域与服务的关联 AWS CLI,或调用 DisassociateCustomDomain API 操作。调用成功后,将返回一个CustomDomain对象,该对象描述了与您的服务取消关联的自定义域。该对象显示DELETING状态。