Trechos de modelos do Route 53 - AWS CloudFormation

Trechos de modelos do Route 53

Conjunto de registro de recurso do Amazon Route 53 usando ID ou nome de zona hospedada

Ao criar um conjunto de registro de recurso do Amazon Route 53, especifique a zona hospedada em que você deseja adicioná-lo. O AWS CloudFormation fornece duas maneiras de especificar uma zona hospedada.

  • Você pode especificar explicitamente a zona hospedada usando a propriedade HostedZoneId.

  • Você pode fazer com que o AWS CloudFormation encontre a zona hospedada usando a propriedade HostedZoneName. Se você usar a propriedade HostedZoneName e houver várias zonas hospedadas com o mesmo nome, o AWS CloudFormation não criará a pilha.

Adição de RecordSet usando HostedZoneId

Este exemplo adiciona um conjunto de registro de recurso do Amazon Route 53 que contém um registro SPF para o nome de domínio mysite.example.com que usa a propriedade HostedZoneId para especificar a zona hospedada.

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

Adição de RecordSet usando HostedZoneName

Este exemplo adiciona um conjunto de registros de recurso do Amazon Route 53 para o nome de domínio "mysite.example.com" usando a propriedade HostedZoneName para especificar a zona hospedada.

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

Usar RecordSetGroup para configurar conjuntos de registros de recurso ponderados

Este exemplo usa um AWS::Route53::RecordSetGroup para configurar dois registros CNAME para o "example.com". zona hospedada. A propriedade RecordSets contém os conjuntos de registros CNAME para o nome DNS do "mysite.example.com". Cada conjunto de registros contém um identificador (SetIdentifier) e um peso (Weight). A proporção do tráfego de Internet que é roteada para os recursos é baseada nos seguintes cálculos:

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

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

Para obter mais informações sobre conjuntos de registros de recursos ponderados, consulte Roteamento ponderado no Guia do desenvolvedor do 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: '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

Usar RecordSetGroup para configurar um conjunto de registros de recursos de alias

Os exemplos a seguir usam um AWS::Route53::RecordSetGroup para configurar um conjunto de registros de recurso de alias chamado example.com que roteia o tráfego para um load balancer do ELB Versão 1 (Classic) e um load balancer (aplicativo ou rede) da versão 2. A propriedade AliasTarget especifica o ID da zona hospedada e o nome DNS para o LoadBalancer myELB usando a função intrínseca GetAtt. GetAtt recupera propriedades diferentes do recurso myELB, dependendo de você estar roteando o tráfego para um load balancer da versão 1 ou da versão 2:

  • Load balancer da versão 1: CanonicalHostedZoneNameID e DNSName

  • Load balancer da versão 2: CanonicalHostedZoneID e DNSName

Para obter mais informações sobre conjuntos de registros de recurso de alias, consulte Escolher entre registros de alias e de não alias, no Guia do Desenvolvedor do Route 53.

JSON para load balancer da versão 1

"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 para load balancer da versão 1

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 para load balancer da versão 2

"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 para load balancer da versão 2

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'

Conjunto de registros de recursos de alias para uma distribuição do CloudFront

O exemplo a seguir cria um conjunto de registros de alias que encaminha as consultas para a distribuição do CloudFront especificada.

nota

Quando você cria conjuntos de registros de recursos de alias, você deve especificar Z2FDTNDATAQYW2 para a propriedade HostedZoneId, conforme mostrado no exemplo a seguir. Os conjuntos de registros de recursos do CloudFront não podem ser criados em uma zona privada.

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