AWS CloudFormation
User Guide (API 版本 2010-05-15)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

Route 53 模板代码段

使用托管区名称或 ID 的 Amazon Route 53 资源记录集

创建 Amazon Route 53 资源记录集时,您必须指定您想添加记录集的托管区。AWS CloudFormation 提供两种方法执行此操作。您可以使用 HostedZoneId 属性明确指定托管区,或让 AWS CloudFormation 使用 HostedZoneName 属性查找托管区。如果您使用 HostedZoneName 属性且存在多个域名称相同的托管区,则 AWS CloudFormation 不会创建堆栈。

使用 HostedZoneId 添加 RecordSet

此示例添加包含域名 mysite.example.com(使用 HostedZoneId 属性指定托管区域)的 SPF 记录的 Amazon Route 53 资源记录集。

JSON

"myDNSRecord" : { "Type" : "AWS::Route53::RecordSet", "Properties" : { "HostedZoneId" : "Z3DG6IL3SJCGPX", "Name" : "mysite.example.com.", "Type" : "SPF", "TTL" : "900", "ResourceRecords" : [ "\"v=spf1 ip4:192.168.0.1/16 -all\"" ] } }

YAML

myDNSRecord: Type: AWS::Route53::RecordSet Properties: HostedZoneId: Z3DG6IL3SJCGPX Name: mysite.example.com. Type: SPF TTL: '900' ResourceRecords: - '"v=spf1 ip4:192.168.0.1/16 -all"'

使用 HostedZoneName 添加 RecordSet

此示例使用 HostedZoneName 属性添加包含域名 "mysite.example.com" 之 A 记录的 Amazon Route 53 资源记录集,以指定托管区。

JSON

"myDNSRecord2" : { "Type" : "AWS::Route53::RecordSet", "Properties" : { "HostedZoneName" : "example.com.", "Name" : "mysite.example.com.", "Type" : "A", "TTL" : "900", "ResourceRecords" : [ "192.168.0.1", "192.168.0.2" ] } }

YAML

myDNSRecord2: Type: AWS::Route53::RecordSet Properties: HostedZoneName: example.com. Name: mysite.example.com. Type: A TTL: '900' ResourceRecords: - 192.168.0.1 - 192.168.0.2

使用 RecordSetGroup 设置加权资源记录集

此示例使用 AWS::Route53::RecordSetGroup 设置 "example.com" 托管区的两个记录集。RecordSets 属性中含有 "mysite.example.com" DNS 名称的 CNAME 记录集。每个记录集中都含有一个标识符 (SetIdentifier) 和权重 (Weight)。Frontend One 的权重是 40%(4/10),Frontend Two 是 60%(6/10)。有关加权资源记录集的更多信息,请参阅 Route 53 Developer Guide 中的 Setting Up Weighted Resource Record Sets

JSON

"myDNSOne" : { "Type" : "AWS::Route53::RecordSetGroup", "Properties" : { "HostedZoneName" : "example.com.", "Comment" : "Weighted RR for my frontends.", "RecordSets" : [ { "Name" : "mysite.example.com.", "Type" : "CNAME", "TTL" : "900", "SetIdentifier" : "Frontend One", "Weight" : "4", "ResourceRecords" : ["example-ec2.amazonaws.com.cn"] }, { "Name" : "mysite.example.com.", "Type" : "CNAME", "TTL" : "900", "SetIdentifier" : "Frontend Two", "Weight" : "6", "ResourceRecords" : ["example-ec2-larger.amazonaws.com.cn"] } ] } }

YAML

myDNSOne: Type: AWS::Route53::RecordSetGroup Properties: HostedZoneName: example.com. Comment: Weighted RR for my frontends. RecordSets: - Name: mysite.example.com. Type: CNAME TTL: '900' SetIdentifier: Frontend One Weight: '4' ResourceRecords: - example-ec2.amazonaws.com.cn - Name: mysite.example.com. Type: CNAME TTL: '900' SetIdentifier: Frontend Two Weight: '6' ResourceRecords: - example-ec2-larger.amazonaws.com.cn

使用 RecordSetGroup 设置别名资源记录集

此示例使用 AWS::Route53::RecordSetGroup 设置 "example.com" 托管区的别名资源记录集。RecordSets 属性中含有顶级域名 "example.com" 的 A 记录。AliasTarget 属性使用 GetAtt 内部函数指定 myELB LoadBalancer 的托管区 ID 和 DNS 名称,以检索 myELB 资源的 CanonicalHostedZoneNameID 和 DNSName 属性。更多有关别名资源集的信息,请参阅 Route 53 Developer Guide 中的 Creating Alias Resource Record Sets 部分。

JSON

"myELB" : { "Type" : "AWS::ElasticLoadBalancing::LoadBalancer", "Properties" : { "AvailabilityZones" : [ "us-east-1a" ], "Listeners" : [ { "LoadBalancerPort" : "80", "InstancePort" : "80", "Protocol" : "HTTP" } ] } }, "myDNS" : { "Type" : "AWS::Route53::RecordSetGroup", "Properties" : { "HostedZoneName" : "example.com.", "Comment" : "Zone apex alias targeted to myELB LoadBalancer.", "RecordSets" : [ { "Name" : "example.com.", "Type" : "A", "AliasTarget" : { "HostedZoneId" : { "Fn::GetAtt" : ["myELB", "CanonicalHostedZoneNameID"] }, "DNSName" : { "Fn::GetAtt" : ["myELB","DNSName"] } } } ] } }

YAML

myELB: Type: AWS::ElasticLoadBalancing::LoadBalancer Properties: AvailabilityZones: - "us-east-1a" Listeners: - LoadBalancerPort: '80' InstancePort: '80' Protocol: HTTP myDNS: Type: AWS::Route53::RecordSetGroup Properties: HostedZoneName: example.com. Comment: Zone apex alias targeted to myELB LoadBalancer. RecordSets: - Name: example.com. Type: A AliasTarget: HostedZoneId: !GetAtt myELB.CanonicalHostedZoneNameID DNSName: !GetAtt myELB.DNSName

CloudFront 分配的别名资源记录集

下面的示例创建将查询路由到指定 CloudFront 分配域名的别名记录集。

注意

在创建别名资源记录集时,必须为 HostedZoneId 属性指定 Z2FDTNDATAQYW2,如以下示例中所示。无法在私有区域中创建 CloudFront 的别名资源记录集。

JSON

"myDNS" : { "Type" : "AWS::Route53::RecordSetGroup", "Properties" : { "HostedZoneId" : { "Ref" : "myHostedZoneID" }, "RecordSets" : [{ "Name" : { "Ref" : "myRecordSetDomainName" }, "Type" : "A", "AliasTarget" : { "HostedZoneId" : "Z2FDTNDATAQYW2", "DNSName" : { "Ref" : "myCloudFrontDistributionDomainName" } } }] } }

YAML

myDNS: Type: AWS::Route53::RecordSetGroup Properties: HostedZoneId: Ref: myHostedZoneID RecordSets: - Name: Ref: myRecordSetDomainName Type: A AliasTarget: HostedZoneId: Z2FDTNDATAQYW2 DNSName: Ref: myCloudFrontDistributionDomainName