自定义域问题排查 - AWS Amplify 托管

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

自定义域问题排查

如果您在将自定义域连接到 Amplify 应用程序时遇到问题,请查阅本节中的主题以获取帮助。

如果您在这里找不到问题的解决方案,请联系 支持。有关更多信息,请参阅 AWS 支持 用户指南中的创建支持案例

我需要验证我的CNAME解决方法

  1. 向第三方域名提供商更新DNS记录后,您可以使用诸如 dig 之类的工具或免费网站(例如 https://www.whatsmydns.net/)来验证您的CNAME记录是否正确解析。以下屏幕截图演示了如何使用 whatsmydns.net 来查看你的 www.example.com 域名的CNAME记录。

    whatsmydns.net 应用程序,您可以在其中输入要查看的网站名称。
  2. 选择 “搜索”,whatsmydns.net 会显示你的搜索结果。CNAME以下屏幕截图是验证是否正确CNAME解析为 cloudfron URL t.net 的结果列表的示例。

    显示解析结果的 whatsmydns.net 应用程序。CNAME

我在第三方托管的域卡在了等待验证状态

  1. 如果您的自定义域名处于 “待验证” 状态,请确认您的 CNAME 记录正在解析。参见之前的疑难解答主题 “如何验证我的 CNAME 已解决,以获取有关执行此任务的说明。

  2. 如果您的 CNAME 记录无法解析,请确认 CNAME 您的域名提供商的DNS设置中存在条目。

    重要

    请务必更新您的 CNAME 在您创建自定义域名后立即记录。在 Amplify 控制台中创建您的应用程序后,您的 CNAME 每隔几分钟检查一次记录,以确定它是否可以解析。如果一小时后仍未解决,则每隔数小时进行一次检查,这可能会导致您的域名在准备好使用方面会有所延迟。如果您添加或更新了您的 CNAME 在您创建应用程序几小时后记录,这是您的应用程序停留在 “待验证” 状态的最可能原因。

  3. 如果你已经证实了 CNAME 记录存在,那么您的提供DNS商可能存在问题。您可以联系DNS提供商来诊断DNS验证原因 CNAME 无法解决问题,或者您可以将您的迁移DNS到 Route 53。有关更多信息,请参阅将 Amazon Route 53 作为现有域的DNS服务

我在 Amazon Route 53 托管的域卡在了等待验证状态

如果您将域转移到 Amazon Route 53,则您的域可能与创建应用程序时由 Amplify 发布的名称服务器不同。执行以下步骤诊断出错的原因。

  1. 登录 Amazon Route 53 控制台

  2. 在导航窗格中,选择托管区域,然后选择要连接的域的名称。

  3. 记录托管区域详细信息部分中的名称服务器值。您需要这些值来完成下一步。以下 Route 53 控制台屏幕截图在右下角处显示了名称服务器值的位置。

    Route 53 控制台中“托管区详细信息”部分,显示了名称服务器值。
  4. 在导航窗格中,选择 Registered domains。验证已注册域部分显示的名称服务器是否与您在上一步中在托管区域详细信息部分中记录的名称服务器值一致。如果不一致,请编辑名称服务器值,使其与托管区域中的值一致。以下 Route 53 控制台屏幕截图在右侧显示了名称服务器值的位置。

    Route 53 控制台中“已注册域”部分,显示了名称服务器值。
  5. 如果这仍无法解决问题,请联系 支持。有关更多信息,请参阅 AWS 支持 用户指南中的创建支持案例

我的带有多级子域名的应用程序停留在 “待验证” 状态

如果具有多级子域名的应用程序在连接到第三方DNS提供商时停留在 “待验证” 状态,则您的DNS记录格式可能存在问题。某些DNS提供商会自动将二级域名 (SLD) 和顶级域名 (TLD) 域名后缀添加到您的记录中。如果您还以包含SLD和的格式指定域TLD,则可能会导致域验证问题。

例如,连接域名时,请先尝试使用 Amplify 提供的完整格式指定域名。_hash.docs.backend.example.com如果SSL配置停留在 “待验证” 状态,请尝试SLD从记录中删除TLD和。例如,如果完整格式为_hash.docs.backend.example.com,则指定_hash.docs.backend。等待 15 到 30 分钟以允许记录传播。然后使用诸如 MX Toolbox 之类的工具来检查验证过程是否正常。

我的DNS提供商不支持具有完全限定域名的 A 记录

某些DNS提供商不支持具有完全限定域名 (FQDN) 的 A 记录,例如example.cloudfront.net。例如,Cloudflare A records 只能写 IPv4 地址和不支持 FQDNs。 要解决此限制,我们建议使用 CNAME 记录而不是 A records 在你的 DNS 配置。

举个例子,以下 DNS 配置使用 A record.

A | @ | ***.cloudfront.net CNAME | www | ***.cloudfront.net

将其更改为以下内容 DNS 要使用的配置 CNAME 仅限记录。

CNAME | @ | ***.cloudfront.net CNAME | www | ***.cloudfront.net

这种解决方法使您可以正确地将顶点域(@ 记录)指向诸如之类的服务 CloudFront,同时避免了IPv4仅限于以下内容的限制 A records 在 Cloudflare 的系统中。

我收到一个CNAMEAlreadyExistsException错误

如果您遇到CNAMEAlreadyExistsException错误,则表示您尝试连接的其中一个主机名(子域名或顶点域)已部署到另一个 Ama CloudFront zon 分发中。错误的根源取决于您当前的主机和DNS提供商。

A CNAME 别名,例如example.com或一次sub.example.com只能与单个 CloudFront分配相关联。CNAMEAlreadyExistsException表示您的域名已与另一个 CloudFront 分发相关联,无论是在同一个账户中 AWS 账户,还是可能在不同的账户中。在 Amplify Hosting 创建的新 CloudFront 发行版生效之前,必须先解除该域名与之前的发行版的关联。如果您或您的组织拥有多个帐户,则可能需要检查多个 AWS 账户帐户。

执行以下步骤来诊断CNAMEAlreadyExistsException错误的原因。

  1. 登录 Amazon CloudFront 控制台并确认您没有将此域部署到其他分配。单曲 CNAME 一次可以将记录附加到一个 CloudFront 发行版中。

  2. 如果您之前已将该域部署到 CloudFront 分配中,则必须将其删除。

    1. 在左侧导航菜单中,选择分发

    2. 选择要编辑的分发的名称。

    3. 选择通用选项卡。在 Settings(设置)部分中,选择 Edit(编辑)。

    4. 备用域名 (CNAME) 中删除域名。然后选择保存更改

  3. 确认当前 AWS 账户 或其他 CloudFront 版本中不存在使用此域的其他发行版 AWS 账户。如果它不会中断任何当前正在运行的服务,请尝试删除并重新创建托管区域。

  4. 查看此域是否与您拥有的其他 Amplify 应用程序相关联。如果是,请确保您没有尝试重用其中一个主机名。如果您正在使用www.example.com其他应用程序,则不能www.example.com与当前正在连接的应用程序一起使用。您可以使用其他子域名,例如。blog.example.com

  5. 如果该域曾成功连接到其他应用程序,然后在过去一小时内被删除,请至少在一小时后重试。如果您在 6 小时后仍看到此异常,请与联系 支持。有关更多信息,请参阅 AWS 支持 用户指南中的创建支持案例

  6. 如果您通过 Route 53 管理您的域名,请务必清理所有托管区域 CNAME 或 ALIAS 指向旧 CloudFront 发行版的记录。

  7. 完成上述步骤后,从 Amplify Hosting 中移除自定义域名,然后重新开始在 Amplify 控制台中连接自定义域名的工作流程。

我收到需要额外验证错误

如果您收到 “需要额外验证” 错误,这意味着 AWS Certificate Manager (ACM) 需要其他信息才能处理此证书申请。这可以用作防止欺诈措施,例如域名位于 Alexa 1000 强网站中时。要提供此必要信息,请使用支持中心联系 支持。如果您没有支持计划,请在ACM讨论论坛中发布新话题。

注意

您无法为 Amazon 拥有的域名 (例如以 amazonaws.com、cloudfront.net 或 elasticbeanstalk.com 结尾的域名) 请求证书。

我在上面收到了 404 错误 CloudFront URL

为了提供流量,Amplify Hosting 指向了 CloudFront URL通过记录。CNAME在将应用程序连接到自定义域的过程中,Amplify 控制台会显示该应用程序 CloudFront URL的。但是,您不能使用它直接访问您的应用程序 CloudFront URL。它会返回 404 错误。您的应用只能使用 Amplify URL 应用程序(例如https://main.d5udybEXAMPLE.amplifyapp.com)或您的自定义域名(例如)进行www.example.com解析。

Amplify 需要将请求路由到正确部署的分支,并使用主机名称来执行此操作。例如,您可以配置指向应用程序主线分支的域 www.example.com,也可以配置指向相同应用程序开发分支的域 dev.example.com。因此,您必须根据应用程序的配置子域来访问您的应用程序,这样 Amplify 才能相应地路由请求。

我在访问我的域名时收到SSL证书或HTTPS出现错误

如果您在第三方DNS提供商处配置了证书颁发机构授权 AWS Certificate Manager (CAAACM) DNS 记录,() 可能无法更新或补发自定义域证书的中间SSL证书。要解决这个问题,您需要添加一条CAA记录以信任至少一个亚马逊的证书颁发机构域。以下过程描述了您需要执行的步骤。

添加CAA记录以信任 Amazon 证书颁发机构
  1. 向您的域名提供商配置CAA记录,以信任至少一个亚马逊的证书颁发机构域。有关配置CAA记录的更多信息,请参阅《AWS Certificate Manager 用户指南》中的 “证书颁发机构授权 (CAA) 问题”。

  2. 使用以下方法之一更新您的SSL证书:

    • 使用 Amplify 控制台手动更新。

      注意

      此方法会导致您的自定义域宕机。

      1. 登录 AWS Management Console 并打开 Amplify 控制台。

      2. 选择要向其添加CAA记录的应用程序。

      3. 在导航窗格中,依次选择应用程序设置域管理

      4. 域管理页面上,删除自定义域。

      5. 再次将您的应用程序连接到自定义域。此过程颁发新SSL证书,其中间证书现在可以由管理ACM。

        要将应用程序重新连接到您的自定义域,请使用与您正在使用的域提供商相对应的以下步骤之一。

    • 请联系 支持 以补发您的SSL证书。