CloudFront 分配未显示为 Route53 别名目标

Posted

技术标签:

【中文标题】CloudFront 分配未显示为 Route53 别名目标【英文标题】:CloudFront distribution not showing as Route53 alias target 【发布时间】:2015-08-17 04:19:45 【问题描述】:

我正在尝试添加指向我的云端分发的路由 53 记录集。但是,当我在路由 53 中选择“创建记录集”并在后续面板中单击别名目标时,未列出云前端分布。我得到的只是“没有可用的目标”。我的发行版已创建并已启用(并且正在运行)。我在我的发行版中添加了一个 CName,其域名与我在 Route53 中设置的域名相同,但它仍然没有显示。

如何让我的分布显示在 Alias Target 字段中,以便我可以将 Route53 ‘a’ 记录指向它?

谢谢

【问题讨论】:

控制台在填充该框方面是出了名的迟钝。点击它,点击远离它,再次点击它似乎这可能是正确的魔法咒语。您是否等到您的 Cloudfront 分发状态显示“已部署”? This article 对此进行了描述:备用域名 (CNAME) 不应为空,以便在 A 记录别名的下拉列表中可见。 @Michael-sqlbot 我还必须刷新 Route53 页面才能看到它。 我将我的云端安全策略更改为 TLSv1.1_2016,它为我解决了这个问题 【参考方案1】:

结合几个正确但不完整的答案:

    仅支持 A 记录和 AAAA。不是CNAME 记录。 Route53“别名目标”框与 CloudFront 分配的“备用域名”字段匹配。如果您要为 something.example.com 创建新记录集,您应该已经将其中一个分配的备用域名设置为 something.example.com。 Route53 管理控制台可能会很慢,并且可能无法立即找到您的分发 - 等到分发状态为 Deployed

【讨论】:

AAAA 也可以,实际上是 AWS 文档推荐的(第 7 步):docs.aws.amazon.com/Route53/latest/DeveloperGuide/… 此外,如果 CloudFront 分配的状态为 In Progress,则不会出现。等到Deployed 令人惊讶的是,CF 分发设置文档中没有更好地记录这一点。 @Mehran 那不正确。 AAAA 记录用于 IPv6 IP。【参考方案2】:

确保您已为您的分配设置一个或多个备用域名,否则它不会列在 Route53 别名的目标组合中。

据我了解,这与在您的 Apache 的 VirtualHost 上配置 ServerAlias 相同(或 nginx 的对应方等) .没有它,当它到达那里时,您的请求将不会被识别为发往该发行版。

来自 AWS 的文档:

如果您使用 CloudFront 分发您的内容,您可以使用 Amazon Route 53 将查询路由到您的 CloudFront 分发。您的 Amazon Route 53 托管区域的名称(例如 example.com)必须与 CloudFront 分配中的备用域名匹配。您无法将查询路由到您的分配的 CloudFront 域名(例如 d111111abcdef8.cloudfront.net)。以下过程假设您已经注册了适用的域名。

【讨论】:

谢谢,帮我修好了。 你能链接到文档吗? 截至 2017 年 10 月:docs.aws.amazon.com/Route53/latest/DeveloperGuide/… 这是我的问题【参考方案3】:

确保它是 A 记录而不是 CNAME 记录(很奇怪,我知道)。我发现隐藏在此处的文档中:

http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-values-alias.html

【讨论】:

这是正确的答案 虽然正确的 AWS 至少应该修正一下措辞。在分发设置中,它要求指定 CNAME,但是必须将路由 53 设置为 A 记录才能工作。 谢谢安德鲁。这非常令人困惑。【参考方案4】:

如果您的分配未显示为别名目标,您始终可以手动将 d123.cloudfront.net(将 d123.cloudfront.net 替换为您的分配的实际 DNS 名称)复制并粘贴到目标中。这将允许您创建别名记录。

【讨论】:

Route53 管理控制台目前不允许您执行此操作。您可以改为使用 CNAME,但它不会是 AWS 意义上的“别名”。 jelder,它一直有效,并且每次都对我有效。 这行得通,只要您将 CloudFront 分配 URL 粘贴到该框中,AWS 就会将其拾取并保存。谢谢!【参考方案5】:

TL/DR

将您在 Cloudfront Distribution 的来源中的 Origin ID 设置为与您尝试为其创建别名的域名相同

更多详情

我为此苦苦挣扎了一段时间。

最后,我比较了一个 确实 出现在 Route 53 中的有效 CloudFront 分布和一个没有出现的 CloudFront 分布。

我注意到,在分发的来源中指定的 Origin Id 不是我网站的域名

此选项位于:CloudFront Distributions > [Id of distribution] > Origins and Origin Groups > Origins

我只列出了一个来源,其中路径是公共 s3 存储桶的名称。该条目还有一个Origin ID 字段。当我将其更新为我的域名时(不带 www 前缀),例如testdomain.com 然后我可以在 53 号路由别名下拉列表中看到这个云前分布。

【讨论】:

【参考方案6】:

您必须填写 Alternate Domain Names (CNAMEs) 字段,例如使用

www.my_site.com  
*.my_site.com

对于SSL Certificate 字段选择

Custom SSL Certificate (example.com)

为此,您必须使用 ACM 创建和验证您的域,ACM 必须在弗吉尼亚州创建。

之后,您将能够在 R53 中看到 Cloudfront。

【讨论】:

谢谢,有帮助!【参考方案7】:

确保您的 CloudFront 分配包含您的站点名称 (example.com )! 我遇到了同样的问题,花了一个多小时试图解决这个问题......

【讨论】:

这对我有用。我必须将我的域添加到备用域名。谢谢!【参考方案8】:

诀窍是在域之前输入 www,因为 CloudFront 与带有 www 或您使用的任何子域的备用域名匹配。输入 www 或您的子域,它会找到分布。

【讨论】:

? 我们开始解决一些错误 :) 但是您为什么能够为云端选择区域? cloudfront 总是在 us-east-1【参考方案9】:

我的云端分发状态属性需要很长时间才能读取已部署。

但是,在我的地址栏中输入云端域 url 后,我进入了我的网站,即云端域 url 是实时的。

不耐烦,我复制了这个域名地址并粘贴到别名目标字段中。

成功了!

【讨论】:

添加通配符子域时这对我有用。

以上是关于CloudFront 分配未显示为 Route53 别名目标的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自定义 SSL 正确链接 Heroku、CloudFront、Route53?

在 Route53 和 CloudFront 中将 www 重定向到非 www

使用 Cloudfront、EB 和 Route 53 时,源域名应该设置啥?

为 Django 堆栈设置 Route 53->CloudFront->Elastic Beanstalk 基础设施

具有地理位置策略的 AWS Cloudfront 与 Route53

指向 Cloudfront 资源的 Route53 别名记录的默认 TTL 是多少?