ELB和beantalk等服务的hosted zone ID到底有什么用?

What exactly is the purpose of the hosted zone ID for ELB and beanstalk and other services?

如果我想为 AWS 服务创建 route53 别名记录,我还必须指定特定的 "Hosted zone"。托管区域因 ELB 类型而异,并且对于 beantalk 端点和其他服务也不同:https://docs.aws.amazon.com/general/latest/gr/rande.html

谁能解释一下这些托管区域是什么以及为什么我需要手动指定它们(如果通过 UI 选择它会为您添加带有区域的别名)?

为什么我作为用户需要了解这些托管区域 ID?我假设有一个很好的理由说明为什么这不是从我这里抽象出来的,但我不明白为什么。我怀疑 route53 的工作方式有一些不可或缺的东西我不清楚。

Hosted Zone IdRoute53 Public/Private Hosted Zone 关联。当您的自动化需要创建 recordset 时,它必须知道要在哪个 Hosted Zone 中创建记录。它将根据您提供的 Hosted Zone Id 进行识别。

There is something integral to the way route53 works I'm unclear on i suspect.

是的,有。

别名与 CNAME 不同——它们不会导致第二次查询来解析目标。它们是 内部 指针,位于 Route 53 内部,告诉服务 "when you get a request for X, look up the value of Y inside hosted zone Z and return that answer."

主机名不一定唯一映射到单个 Route 53 托管区域。 Route 53 有(最后检查)2048 个唯一的名称服务器 IP 地址,其中 4 个与任何给定的托管区域相关联。 (这并不意味着您只有 4 个实际名称服务器——它们是任播地址。)因此,您可以进入 Route 53 并为您喜欢的任何域名创建一个托管区域。您甚至可以为完全相同的域创建多个 public 托管区域。这听起来很可怕,但它是无害的,因为即使您可以创建它们,也无法使用它们,因为没有人会查询它们……每个托管区域都有一组 4 个永远不会关联的唯一名称服务器与另一个托管区域的方式会导致歧义。

因此,别名不仅仅是查找另一个名称的指令。这是一个直接查看另一个特定托管区域以找到答案的指令。唯一支持此功能的区域是官方服务区域,或与创建别名的区域相同的区域(引用您区域中的另一条记录)。

当然,他们本可以设计不同的,但他们没有。似乎他们最初设计这个是为了解决未来潜在的扩展问题,并计划在每个区域的每个服务中使用多个托管区域,随着 Route 53 的发展和扩展,事实证明这不是必需的。