Route 53-Vorlagenausschnitte - AWS CloudFormation

Route 53-Vorlagenausschnitte

Amazon Route 53-Ressourcendatensatz mit gehosteten Zone oder ID

Wenn Sie einen Amazon Route 53-Ressourcendatensatz erstellen, müssen Sie die gehostete Zone angeben, zu der Sie sie hinzufügen möchten. AWS CloudFormation bietet zwei Möglichkeiten zur Angabe einer gehosteten Zone:

  • Sie können die gehostete Zone mit der Eigenschaft HostedZoneId explizit angeben.

  • Sie können AWS CloudFormation die gehostete Zone mithilfe der HostedZoneName-Eigenschaft suchen lassen. Wenn Sie die Eigenschaft HostedZoneName verwenden und es mehrere gehostete Zonen mit demselben Namen gibt, erstellt AWS CloudFormation den Stack nicht.

Hinzufügen von RecordSet mit HostedZoneId

In diesem Beispiel wird ein Amazon Route 53-Ressourcendatensatz hinzugefügt, der einen SPF-Eintrag für den Domänennamen mysite.example.com enthält, der die Eigenschaft HostedZoneId zum Angeben der gehosteten Zone verwendet.

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"'

Hinzufügen von RecordSet mit HostedZoneName

In diesem Beispiel wird ein Amazon Route 53-Ressourcendatensatz für den Domänennamen „mysite.example.com“ mit der Eigenschaft HostedZoneName zur Angabe der gehosteten Zone hinzugefügt.

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

Einrichten von gewichteten Ressourcendatensätzen mithilfe von RecordSetGroup

In diesem Beispiel wird AWS::Route53::RecordSetGroup verwendet, um zwei CNAME-Einträge für die gehostete Zone „example.com“ einzurichten. Die Eigenschaft RecordSets enthält die CNAME-Datensätze für den DNS-Namen „mysite.example.com“. Jeder Datensatz enthält eine Kennung (SetIdentifier) und eine Gewichtung (Weight). Der Anteil des Internetverkehrs, der zu den Ressourcen geleitet wird, basiert auf den folgenden Berechnungen:

  • Frontend One: 140/(140+60) = 140/200 = 70%

  • Frontend Two: 60/(140+60) = 60/200 = 30%

Weitere Informationen über gewichtete Ressourcendatensätze finden Sie unter Gewichtetes Routing im Entwicklerhandbuch für Amazon Route 53.

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" : "140", "ResourceRecords" : ["example-ec2.amazonaws.com"] }, { "Name" : "mysite.example.com.", "Type" : "CNAME", "TTL" : "900", "SetIdentifier" : "Frontend Two", "Weight" : "60", "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

Einrichten eines Alias-Ressourcendatensätzen mithilfe von RecordSetGroup

Die folgenden Beispiele verwenden ein AWS::Route53::RecordSetGroup, um einen Alias-Ressourcen-Datensatz namens example.com einzurichten, der den Datenverkehr an einen ELB Version 1 (Classic) Load Balancer und einen Version 2 (Application oder Network) Load Balancer leitet. Die Eigenschaft AliasTarget gibt die ID der gehosteten Zone und den DNS-Namen für den myELB LoadBalancer an, indem die intrinsische Funktion GetAtt verwendet wird. GetAtt ruft verschiedene Eigenschaften der myELB-Ressource ab, je nachdem, ob Sie den Datenverkehr an einen Version 1- oder Version 2-Load Balancer leiten:

  • Version 1 Load Balancer: CanonicalHostedZoneNameID und DNSName

  • Version 2 Load Balancer: CanonicalHostedZoneID und DNSName

Weitere Informationen über Alias-Ressourcendatensätze finden Sie unter Wählen zwischen Alias- und Nicht-Alias-Datensätzen im {Route 53-Entwicklerhandbuch.

JSON für Version 1 Load Balancer

"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 für Version 1 Load Balancer

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'

JSON für Version 2 Load Balancer

"myELB" : { "Type" : "AWS::ElasticLoadBalancing::LoadBalancer", "Properties" : { "Subnets" : [ {"Ref": "SubnetAZ1"}, {"Ref" : "SubnetAZ2"} ] } }, "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", "CanonicalHostedZoneID"] }, "DNSName" : { "Fn::GetAtt" : ["myELB","DNSName"] } } } ] } }

YAML für Version 2 Load Balancer

myELB: Type: AWS::ElasticLoadBalancingV2::LoadBalancer Properties: Subnets: - Ref: SubnetAZ1 - Ref: SubnetAZ2 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.CanonicalHostedZoneID' DNSName: !GetAtt 'myELB.DNSName'

Alias-Ressourcendatensatz für eine CloudFront-Verteilung

Das folgende Beispiel erstellt einen Alias-Datensatz, der Anfragen an die angegebene CloudFront-Verteilung weiterleitet.

Anmerkung

Wenn Sie Alias-Ressourcendatensätze erstellen, müssen Sie wie im folgenden Beispiel veranschaulicht für die Eigenschaft Z2FDTNDATAQYW2 den Wert HostedZoneId angeben. In einer privaten Zone können keine Alias-Ressourcendatensätze für CloudFront erstellt werden.

JSON

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

YAML

myDNS: Type: 'AWS::Route53::RecordSetGroup' Properties: HostedZoneId: !Ref myHostedZoneID RecordSets: - Name: !Ref myRecordSetDomainName Type: A AliasTarget: HostedZoneId: Z2FDTNDATAQYW2 DNSName: !GetAtt - myCloudFrontDistribution - DomainName