You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CloudFormation创建Route53记录及了解HostedZone相关参数

AWS::Route53::RecordSet参数说明

前置资源要求

创建AWS::Route53::RecordSet资源前,必须提前创建Route53托管区域(Hosted Zone),你提到的两个参数都来自该托管区域资源。你既可以在同一个CloudFormation模板中创建Hosted Zone资源后直接引用,也可以传入账号下已存在的托管区域的对应属性值。

两个参数的具体含义

HostedZoneId

  • 是Route53为每个托管区域分配的全局唯一标识符,格式示例:Z00111112A3BCDE4FGHIJ
  • 若在同模板创建Hosted Zone,可直接通过!Ref <托管区域资源名>获取该值;若使用已存在的托管区域,可在Route53控制台对应托管区域的详情页查询到该ID
  • 特殊场景:如果要创建指向S3静态网站、CloudFront分发、Global Accelerator实例等AWS资源的别名记录,需要使用对应服务官方公布的固定HostedZoneId值

HostedZoneName

  • 就是创建托管区域时填写的根域名,比如你要管理example.com下的所有DNS记录,托管区域的名称就是example.com
  • DNS规范要求完整域名末尾带点(完全限定域名格式),CloudFormation会自动补全末尾的点,你传入不带点的域名也可正常识别
  • 注意:HostedZoneId和HostedZoneName两个参数二选一填写即可,不需要同时传入;如果同时传,两者必须对应同一个托管区域,否则会抛出参数不匹配的创建错误

简化写法示例

你提供的模板中同时引用了两个参数,完全可以删去其中一个,同模板创建托管区域的参考写法如下:

# 同模板提前创建托管区域
MyHostedZone:
  Type: AWS::Route53::HostedZone
  Properties:
    Name: "example.com"

# 创建DNS记录
Record:
  Type: AWS::Route53::RecordSet
  Properties:
    HostedZoneId: !Ref MyHostedZone # 直接引用同模板托管区域资源,无需额外配置参数
    Comment: DNS name for my instance.
    Name: !Sub "${Subdomain}.example.com"
    Type: CNAME
    TTL: 300
    ResourceRecords:
      - !GetAtt MyEC2Instance.PublicDnsName

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:39:03