AWS 无法为云端 CNAME 指定没有子域的路由 53 记录

Posted

技术标签:

【中文标题】AWS 无法为云端 CNAME 指定没有子域的路由 53 记录【英文标题】:AWS can't specify route 53 record without subdomain for cloudfront CNAME 【发布时间】:2021-01-01 16:02:28 【问题描述】:

我决定在 AWS 上托管我自己的投资组合,所以我完成了以下步骤。

    在 s3 上托管(一切正常) 在 route53 中购买的域 创建了一个类型记录,将我的域指向 s3(一切正常) 在 ACM 中为域生成公共证书:*.mywebsite.com、mywebsite.com 已创建 CloudFront 分配并具有以下设置 ORIGIN DOMAIN NAME:链接到 s3(一切正常) CNAMES:www.mywebsite.com、*.mywebsite.com、mywebsite.com WIEVER 协议策略:将 HTTP 重定向到 HTTPS 使用了第 4 步中制作的自定义证书 创建了另一个 CNAME 记录,将 *.mywebsite.com 指向云端 url

当我使用以下子域访问网站时,我对事情的运作方式非常满意:

www.mywebsite.com foobarbaz.mywebsite.com http://www.mywebsite.com

所有这些都很好,通过 https 协议将其重定向到我的网站 但问题是当我尝试在没有子域的情况下访问我的网站时,mywebsite.com 那是通过 http 协议,而对于 https,我最终得到 ERR_CONNECTION_TIMED_OUT,所以我尝试为名称 mywebsite.com 添加另一个 CNAME 记录并得到了关注错误:

发生错误 错误的请求。 (InvalidChangeBatch 400:DNS 名称为 mywebsite.com 的 CNAME 类型的 RRSet。在 mywebsite.com 区域的顶点不允许使用。)

任何想法如何解决这个问题?

我并不是很喜欢联网和配置这些类型的东西,所以如果我做错了什么,我将不胜感激。

@编辑: 尝试将名称为mywebsite.com 的类型记录添加到www.mywebsite.com 并收到:

(InvalidChangeBatch 400: Tried to create resource record set [name='mywebsite.com.', type='A'] but it already exists), there is already one linking to S3

【问题讨论】:

CNAME 记录不能用于***域。应该为此使用别名记录。 【参考方案1】:

您在第 3 步中遇到问题)。顶点域指向 S3 存储桶,该存储桶应指向 CloudFront 分配。

它应该是这样的:

Route53:ACM 证书 CNAME,A 记录 => 云端 CloudFront:ACM 证书 + mywebsite.com 的别名,来源:S3 存储桶 S3 存储桶:托管文件

请注意,只有 A 记录(和 AAAA,如果您需要 IPv6)指向 CloudFront,并且 ACM 仅使用 1 条 CNAME 记录来验证域。

【讨论】:

【参考方案2】:

AWS 的doc 描述了这种情况。即-

您不能在 DNS 命名空间的顶部节点创建 CNAME 记录,也称为区域顶点(例如 example.com)。如果您要为***域创建指向 AWS 资源的记录,则可以使用别名记录而不是 CNAME。

Alias Records

因此,您可以使用 A 类型的别名记录而不是 CNAME 来解决您看到的错误。

【讨论】:

(InvalidChangeBatch 400: 试图创建资源记录集 [name='mywebsite.com.', type='A'] 但它已经存在),已经有一个链接到 S3 我的回复是关于您看到的错误。就您的项目而言,我对您要解决的问题感到困惑。因此,您的源站点指向一个 s3 存储桶,这就是您想要的。您试图为来源创建什么别名记录?您是否试图将其指向 Cloudfront? 您能否为您的站点创建一个子域并将其作为存储桶名称,然后将您的来源和您的用户访问的子域转到云端?然后让来自云端的流量路由到您的 s3 子域?然后,您可以将所需的 Alias 原始记录指向云端

以上是关于AWS 无法为云端 CNAME 指定没有子域的路由 53 记录的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS Route 53 路由到文件路径

静态网站托管中子域的 AWS S3 存储桶重定向与 DNS CNAME

AWS Certificate Manager,无法获取子域的 https

将 cloudfront 通配符 CNAME 子域路由到 s3 存储桶中的文件夹

在 aws 负载均衡器中 sshing 并将其配置为子域路由?

为前端和后端添加单独的子域路由(Godaddy、AWS 和 Firebase)