amazon-web-services - ELB 和 beanstalk 和其他服务的托管区域 ID 的目的到底是什么?
问题描述
如果我想为 AWS 服务创建 route53 别名记录,我还必须指定特定的“托管区域”。托管区域因 ELB 类型而异,对于 beanstalk 端点和其他服务也不同:https ://docs.aws.amazon.com/general/latest/gr/rande.html
有人可以解释这些托管区域是什么以及为什么我需要手动指定它们(如果通过 UI 选择,它将为您添加带有该区域的别名)?
为什么我作为用户需要了解这些托管区域 ID?我假设有一个很好的理由为什么这不是从我身上抽象出来的,但我不明白为什么。我怀疑 route53 的工作方式是不可或缺的。
解决方案
我怀疑 route53 的工作方式是不可或缺的。
就在这里。
别名与 CNAME 不同——它们不会导致第二次查询来解析目标。它们是Route 53 内部的内部指针,它告诉服务“当您收到对 X 的请求时,在托管区域 Z 内查找 Y 的值并返回该答案。”
主机名不一定唯一映射到单个 Route 53 托管区域。Route 53 有(最后检查)2048 个唯一的名称服务器 IP 地址,其中 4 个与任何给定的托管区域相关联。(这并不意味着您只有 4 个实际的名称服务器——它们是任播地址。)因此,您可以进入 Route 53 并为您喜欢的任何域名创建一个托管区域。您甚至可以为完全相同的域创建多个公共托管区域。尽管这听起来令人震惊,但它是无害的,因为即使您可以创建它们,您也无法使用它们,因为没有人会查询它们......每个托管区域都有一组 4 个永远不会关联的唯一名称服务器以一种会导致歧义的方式与另一个托管区域。
因此,别名不仅仅是查找另一个名称的指令。这是直接查看另一个特定托管区域以找到答案的指令。唯一支持此功能的区域是官方服务区域,或与创建别名的区域相同的区域(引用您区域中的另一条记录)。
当然,他们本可以设计不同的,但他们没有。似乎他们最初设计此功能是为了解决潜在的未来扩展问题,并计划为每个区域的每个服务使用多个托管区域,随着 Route 53 的发展和扩展,事实证明这不是必需的。
推荐阅读
- java - invalid_client 用于使用苹果登录
- lua - 如何在 haproxy 中增加 lua 执行超时?
- typescript - 为什么以不同的方式调用方法?有时带'()',有时不带'()'?
- javascript - Grunt - 是否可以将全局自定义函数传递给 grunt.loadTasks 加载的外部任务?
- python - 遍历 NLTK Pos Tagger 生成的元组
- c++ - 如何测试宏是否在全局/命名空间范围内使用?
- php - 允许的内存大小 php.ini
- python - 使用python pandas将所有直接和间接相关的记录分配给所有child和subchild.group的公共根
- git - 如果我能提出中间提交,如何将 Git 提交分成两部分?
- arrays - 如何在 Swift 中一次将一组自定义对象保存到核心数据存储中