我使用 AWS 已有一年多了,设置了 EC2 实例、域、ELB 等。
当我想将子域分配给 EC2 实例时,我必须创建一个弹性 IP(我付费),然后为该弹性 IP 分配 CNAME 记录。
当我想将子域分配给 ELB(负载均衡器)实例时,我只需为 ELB 创建一个别名资源记录集。
我已经阅读了文档不明白为什么 AWS 不支持对实例进行别名。我是不是遗漏了一个关键概念?直接对 EC2 实例进行别名并跳过整个弹性 IP 位不是更简单吗?
编辑:简单地说 - 为什么我的 EC2 实例不在此列表中:
答案1
简短的回答是:你能为实例的外部 IP 地址或 DNS 名称创建 A 或 CNAME 记录,但你不想这样做。
长答案:您实际上可以创建没有弹性 IP 的 CNAME(甚至 A)记录。但每次您的 EC2 实例重新启动并因此移动到另一个主机系统时,您的实例的 IP 地址(和您的外部主机名)都会发生变化。如果您可以忍受这种情况并接受在 DNS 记录的 TTL 期间无法访问实例的事实,则可以使用外部 IP 并使用您的子域创建 A 记录。但由于 DNS 在分发更改方面速度不是很快(即使 TTL 很低,您也无法确保每个解析器都能正确处理 TTL),因此您大多数时候都不想这样做。这就是 AWS 提供弹性 IP 的原因 - 因此 DNS 记录中的 IP 地址永远不会改变,但如果您将它重新分配给另一个实例(或重新启动主机),AWS 会更改此 IP 地址背后的路由。此路由更改仅在 AWS 数据中心内进行,因此速度非常快(几秒钟内),并且所有用户都可以再次访问您的实例。
希望这可以帮助!
答案2
弹性 IP 地址仅在未分配(即未使用)时才需付费。只要您的弹性 IP 地址已分配给您的实例,您就无需付费。
如果 AWS 支持实例的非弹性 IP 地址的 DNS 别名,那么每当这些公共 IP 地址发生变化时,DNS 就会过时。弹性 IP 地址可保持 IP 地址的一致性。
不过,我同意添加对弹性 IP 地址的别名支持是有价值的。