You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于AWS组织架构的多账户多环境Route 53 DNS配置咨询

可行的多环境跨账户DNS配置方案

根据你的场景,我整理了两种最实用的方案,分别适配不同的权限隔离需求和维护复杂度:


方案一:按环境前缀托管子域(推荐,维护高效+权限清晰)

这个方案调整域名结构为service1.test.services.example.com(环境前缀在前),是行业通用的最佳实践,能大幅降低维护成本,同时实现生产/开发账户的完全隔离:

  1. 在开发账户创建环境级托管区
    登录AWS开发账户的Route53控制台,创建3个公网托管区:

    • test.services.example.com
    • uat.services.example.com
    • release.services.example.com
      每个托管区创建后,复制它的4条NS记录值(Route53会自动生成)。
  2. 在生产账户添加NS记录指向开发账户托管区
    登录AWS生产账户的Route53控制台,打开services.example.com托管区,添加3条NS类型记录:

    • 记录名称:test
    • 记录类型:NS
    • 值:粘贴开发账户test.services.example.com托管区的4个NS域名
      重复此操作,分别添加uatrelease对应的NS记录。
  3. 开发账户管理环境内服务记录
    在开发账户的对应环境托管区(比如test.services.example.com)中,添加service1service2的A/CNAME记录,最终就能实现service1.test.services.example.com的正常解析。


方案二:坚持原域名结构(test.service1.services.example.com

如果必须保留你想要的域名层级,有两种实现方式:

方式A:生产托管区授权开发账户操作(简单但权限隔离弱)

适合服务数量不多,且信任开发账户权限的场景:

  1. 生产账户配置Route53权限策略
    在生产账户的services.example.com托管区中,编辑权限策略,添加允许开发账户IAM角色/用户操作特定前缀记录的语句:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::[开发账户ID]:root"
          },
          "Action": [
            "route53:ChangeResourceRecordSets"
          ],
          "Resource": "arn:aws:route53:::hostedzone/[生产账户services托管区ID]",
          "Condition": {
            "StringLike": {
              "route53:RecordName": [
                "test.*.services.example.com.",
                "uat.*.services.example.com.",
                "release.*.services.example.com."
              ]
            }
          }
        }
      ]
    }
    
  2. 开发账户使用授权角色操作
    在开发账户中创建IAM角色,允许关联生产账户的权限,然后就可以在Route53中切换到生产账户的托管区,添加test.service1.services.example.com等记录。

方式B:为每个服务环境创建独立托管区(完全隔离但维护繁琐)

适合服务数量少,且需要严格权限隔离的场景:

  1. 开发账户创建服务环境托管区
    为每个服务的每个环境创建托管区,比如:

    • test.service1.services.example.com
    • uat.service1.services.example.com
    • release.service1.services.example.com
    • test.service2.services.example.com
      以此类推,复制每个托管区的NS记录值。
  2. 生产账户添加对应NS记录
    在生产账户的services.example.com托管区中,为每个子域添加NS记录:

    • 记录名称:test.service1
    • 记录类型:NS
    • 值:粘贴对应开发账户托管区的NS域名
      重复此操作完成所有服务环境的配置。

关键验证步骤

配置完成后,用dig命令验证解析是否生效:

  • 验证环境级NS记录:dig test.services.example.com NS(方案一)
  • 验证具体服务记录:dig test.service1.services.example.com A
  • 确保GoDaddy的根域配置已经生效:dig services.example.com NS应返回生产账户Route53的NS域名

内容的提问来源于stack exchange,提问作者kk.

火山引擎 最新活动