AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

Amazon 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)。有关加权资源记录集的更多信息,请参阅 Amazon 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"] }, { "Name" : "mysite.example.com.", "Type" : "CNAME", "TTL" : "900", "SetIdentifier" : "Frontend Two", "Weight" : "6", "ResourceRecords" : ["example-ec2-larger.amazonaws.com"] } ] } }

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 - Name: mysite.example.com. Type: CNAME TTL: '900' SetIdentifier: Frontend Two Weight: '6' ResourceRecords: - example-ec2-larger.amazonaws.com

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

此示例使用 AWS::Route53::RecordSetGroup 设置 "example.com" 托管区的别名资源记录集。RecordSets 属性中含有顶级域名 "example.com" 的 A 记录。AliasTarget 属性使用 GetAtt 内部函数指定 myELB LoadBalancer 的托管区 ID 和 DNS 名称,以检索 myELB 资源的 CanonicalHostedZoneNameID 和 DNSName 属性。更多有关别名资源集的信息,请参阅 Amazon 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 分配域名的别名记录集。

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