将 CNAME 与 Amazon CloudFront 一起使用会产生额外费用吗?

Does using CNAME with Amazon CloudFront cause extra charge?

前几天我为我的一个网站创建了一个 CloudFront 分配,我一直在使用自定义 CNAME(cdn.site.com 而不是 whoa123.cloudfront.net)。我想不通的是,使用此服务(自定义 CNAME)是否收费?我无法在任何地方找到使用 CNAME 是否会产生额外费用。我是否需要为此支付额外费用,或者使用它会导致额外的 HTTP request/hits 针对我的 quota/billing?

我正在尝试了解此自定义 CNAME 服务是否随 CloudFront 分发免费,那么为什么我看到的许多主要网站(包括 dropbox.com)不使用自定义 CNAME 并坚持使用默认 cloudfront.net URL.

感谢您提供的任何帮助。

CNAME 是免费的,您只需为云端使用付费。

http://aws.amazon.com/cloudfront/pricing/

将 CNAME 添加到您的分配中实际上并没有创建 DNS 记录,它只是将 CloudFront 配置为接受来自该主机的请求 header。

您仍然需要通过 DNS 提供商创建 CNAME 资源记录,他们可能会向您收费。如果您选择 Route 53,则按查询付费。

如果您确实使用 Route 53,则可以使用他们的自定义 'Alias' 资源记录类型,其中查找是免费的。

就亚马逊文档而言,CNAME 是免费的。

现在您真正的困惑是,为什么像 Dropbox 或其他服务不使用自定义 CNAME?

答案是查找资源。每次有人(也许是浏览器)查找文件时,它都会进行查找以找到它的主机。然后它发现它托管在 Cloudfront 中。然后检索文件。现在仔细检查过程,

首先 yoursite.com 查找 > Cloudfront 查找 > 文件。

对于小型站点来说,这是一个简单的过程。但是猜猜当您 运行 一个每天/小时点击量超过一百万的站点时会发生什么。同样的过程 运行ning 一次又一次。这会消耗大量资源。有时,如此多的查询会产生额外费用。因此,他们从等式中减少了一次查找。现在就像,

云端查找 > 文件。

节省大量时间和资源。对于小型网站,例如每天点击量低于 10 万次,自定义 CNAME 不会致命。

查找的工作原理

查找是一个简单而又复杂的过程。让我们在一个场景中解释一下,

您在浏览器中输入 google.com 并按下回车键。在这种情况下,为了便于解释,不存在 DNS 缓存。

您的浏览器要求您的 OS 查找 google.com。您的 OS 已经列出了 DNS 解析器。通常来自您的 ISP,有时您使用第三方 DNS 解析器,如 Google DNS。一旦 DNS 解析器收到来自 OS 的请求,它就会将请求移交给 根 DNS 服务器 。全球有13个DNS根服务器,360个节点。

根服务器收到请求后,首先会检查 TLD。在本例中,它是一个 .com 域。根服务器知道 .com 域的处理程序的位置,因此它发回一个答案,其中包含 .com 的处理程序 的位置。然后您的解析器向 .com 的处理程序发送请求,以查看它是否知道 google.com 的位置。由于 .com 是 gTLD(通用),因此由商业实体维护。这个商业实体有一个列表,列出了曾经存在的每个 .com 域及其名称服务器位置。他们将 google.com 的名称服务器位置发送到您的解析器。

这里是ns1.google.com、ns2.google.com、ns3.google.com、ns4.google.com。现在您的解析器向 Google 名称服务器询问 google.com 的 IP 地址。现在你有了一个最终的名称服务器,它的 IP 地址实际上是 google.com。它发送IP。

您的解析器将该 IP 发送回您的 OS 并将您的 OS 发送回您的浏览器。然后 TCP 握手 开始。您的浏览器 运行 是 IP,您的计算机和 IP 的物理服务器之间建立的连接。它发回 HTML 并且您的浏览器会为您解释它们。

现在,在大多数情况下,这个过程是漫长而有风险的。所以在每一步中,都有一个缓存列表。您的解析器已经有了经常访问的域的 IP 列表。所以它会立即解析 IP。

你的问题,你的解析器可能缓存了cdn。yoursite.com并直接调用了IP。但是,猜猜当您与数百万访客站在一起时会发生什么。当他们的 DNS 解析器更新其缓存时,有 15% 的用户可能正在访问。这意味着,那 15% 的用户请求必须遵循我解释的程序才能到达您的站点。现在他们必须第一次寻找 cdn.yoursite.com,然后当它返回 CloudFront 的主机时,同样的过程 运行s 再次用于云前端 IP。时间和资源的巨大损失,因为每次查找都会打开 4 层数据库,这会消耗内存和物理处理能力 CPU。

那么,有些DNS解析器只缓存一层IP。 CNAME 实际上是一个主机声明,它告诉解析器这个特定的 CNAME 指向其他地方。其他地方是另一个请求。所以它也在 Resolver 的缓存上 运行s 两个查询。如果没有任何缓存,4层疼痛向内。

希望我解释正确。写完这个我的头已经在旋转了!