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

111
我正在尝试添加一条路由53记录集,指向我的CloudFront分发。然而,在路由53中选择“创建记录集”并在随后的面板中单击别名目标时,CloudFront分发未列出。我只得到“没有可用的目标”。我的分发已创建并启用(并且正在工作)。我已向我的分发添加了一个CName,该CName与我在Route53中设置的相同域名相同,但它仍然没有显示。
我如何使我的分发显示在别名目标字段中,以便我可以将Route53的“a”记录指向它?
谢谢

5
控制台在填充该框时是出了名的缓慢。点击进去,然后离开,再次点击进去似乎是正确的魔法咒语。您等到 Cloudfront 分发状态显示“已部署”了吗? - Michael - sqlbot
3
这篇文章描述了A记录别名下拉菜单中备用域名(CNAME)需要非空才能显示。请注意,翻译后的意思应与原文相同,但要使用通俗易懂的语言。 - boldnik
@Michael-sqlbot 我也不得不刷新Route53页面才能看到它。 - qu1j0t3
我将我的CloudFront安全策略更改为TLSv1.1_2016,这解决了我的问题。 - CodeDoctorJL
11个回答

113

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

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

2
“AAAA"也可以使用,实际上AWS文档(step 7)建议使用它:https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html - Mehran
1
此外,如果CloudFront分发的状态为“正在进行中”,它将不会出现。请等待其变为“已部署”。 - Sam Sehnert
这个在CF Distribution设置文档中没有更好的记录,真是令人惊讶。 - qu1j0t3
@Mehran 这是不正确的。AAAA 记录是用于 IPv6 IP 的。 - ErikE
5
我的代码中缺少了数字2,谢谢! - vargen_
我在AWS上购买了我的两个域名,但是当我将它们添加到我的CloudFront分发时,系统告诉我需要附加证书。但是我并不知道在哪里可以进行此操作,我去过证书管理器,但它不允许我创建证书,这些都太过复杂。他们应该拥有所有所需的信息。 - Martijn Scheffer

85

请确保您的distribution设置了一个或多个备用域名,否则它将不会在Route53 Alias的目标组合列表中显示。

据我所知,这与在Apache的VirtualHost(或Nginx等对应物)上配置ServerAlias相同。没有它,当请求到达时,您的请求将无法被识别为要去该distribution。

根据AWS文档:

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


3
谢谢,这为我解决了问题。 - Dean Oakley
请问能否提供文档链接? - Gobi Dasu
截至2017年10月:http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-values-alias.html - Carsten
这是我的问题。 - bad robot
这也是我的问题,谢谢。 - strangeMethod
谢谢。看来需要备用域名。 - Veleirian

43

7
这个正确答案。 - Moataz Elmasry
虽然正确,但 AWS 应该至少修复措辞。在分发设置中,它要求指定 CNAME,但是 Route 53 必须设置为 A 记录才能正常工作。 - Rudiger
谢谢Andrew。这很令人困惑。 - dmitrybelyakov

18

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


Route53管理控制台目前不允许您执行此操作。您可以使用CNAME代替,但它在AWS意义上不会成为“别名”。 - jelder
jelder,每次都能正常工作。 - imperalix
这个很好用,只要你把CloudFront分发的URL粘贴到那个框里,AWS就会自动识别并保存。谢谢! - Herald Smit

8

确保您的CloudFront分发包含您网站的名称(example.com)!我曾经遇到同样的问题,花了一个多小时才解决它...


5
这对我起了作用。我不得不将我的域名添加到备用域名中。谢谢! - Juan Rangel
这适用于子域名(something.example.com),但不适用于顶级域名(example.com)。 - hp10

6

TL/DR

在您的CloudFront Distribution中,将Origin ID设置为要创建别名的域名。

更多细节

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

最后,我将一个能够在Route 53中显示的工作CloudFront Distribution与一个不能够在其中显示的进行了比较。

我注意到,在分发的原点中指定的Origin Id并不是我的网站的域名。

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

我只有一个列出了公共s3存储桶名称作为路径的原点。该条目还具有Origin ID字段。当我将其更新为我的域名(不带www前缀),例如testdomain.com时,我就能够在Route 53别名下拉菜单中看到这个云前置分发。


6

技巧是在域名前输入www,因为CloudFront将与带有www或任何子域的替代域名进行匹配。输入www或您的子域名即可找到分发。

cloudfront


我们开始修复一些漏洞的临时解决方案 :) - Abdennour TOUMI
但是你怎么能为CloudFront选择区域呢?CloudFront始终在us-east-1。 - Abdennour TOUMI
此外,如果您想为根域设置别名(即http://example.com),则添加www,找到分发,然后删除www以进行配置。 - robertlayton

5
你需要填写“备用域名(CNAME)”字段,例如使用。请填写以下信息:
www.my_site.com  
*.my_site.com

SSL 证书 字段中选择

Custom SSL Certificate (example.com)

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

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


2
我的CloudFront分发状态一直显示为“已部署”,但是在浏览器地址栏中输入CloudFront域名URL后,我成功访问了我的网站,也就是说CloudFront域名URL已经生效。
由于我很着急,所以我将该域名地址复制并粘贴到别名目标字段中。结果奏效了!
如下图所示:enter image description here enter image description here

这对我在添加通配符子域时有效。 - Ajeesh Joshy

0
好的,存在一系列未经充分记录的依赖关系。
按照以下顺序进行操作:
1. 在Route 53购买或转移一个域名。 2. 创建您的Route 53区域以托管此域名。Route 53是一个全球服务,所以您可以在任何地区进行操作。 3. 创建一个ACM证书。ACM是一个关注地区的服务,但您用于允许HTTPS调用的证书需要映射到您的DNS,因此您需要在n.Virginia(us-east-1)地区创建此证书。 4. 现在,您可以创建一个A记录,并将其别名到一个CloudFront分发。您的网站应该出现在有效目标的下拉列表中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接