Fragmentos de plantilla de Route 53 - AWS CloudFormation

Fragmentos de plantilla de Route 53

Conjunto de registros de recursos de Amazon Route 53 con el ID o nombre de zona hospedada

Al crear un conjunto de registros de recursos de Amazon Route 53, debe especificar la zona hospedada donde desee añadirlo. AWS CloudFormation ofrece dos formas de especificar una zona hospedada.

  • Puede especificar explícitamente la zona hospedada mediante la propiedad HostedZoneId.

  • Puede solicitar que AWS CloudFormation busque la zona hospedad con la propiedad HostedZoneName. Si utiliza la propiedad HostedZoneName y hay varias zonas hospedadas con el mismo nombre, AWS CloudFormation no crea la pila.

Adición de RecordSet mediante HostedZoneId

En este ejemplo se agrega un conjunto de registros de recursos de Amazon Route 53 que contiene un registro SPF para el nombre de dominio mysite.example.com que utiliza la propiedad HostedZoneId para especificar la 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"'

Adición de RecordSet mediante HostedZoneName

En este ejemplo se agrega un conjunto de registros de recursos de Amazon Route 53 para el nombre de dominio “mysite.example.com” mediante la propiedad HostedZoneName para especificar la 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

Uso de RecordSetGroup para la configuración de conjuntos de registros de recursos ponderados

En este ejemplo, se utiliza el recurso AWS::Route53::RecordSetGroup para configurar dos registros CNAME para “example.com”. zona alojada. La propiedad RecordSets contiene los conjuntos de registros de CNAME para el nombre de DNS “mysite.example.com”. Cada conjunto de registros contiene un identificador (SetIdentifier) y un peso (Weight). La proporción de tráfico de Internet que se enruta a los recursos se basa en los siguientes cálculos:

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

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

Para obtener más información sobre los conjuntos de registros de recursos ponderados, consulte Ruteo ponderado en la Guía para desarrolladores de 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

Uso de RecordSetGroup para configurar un conjunto de registros de recursos de alias

En los ejemplos siguientes se utiliza AWS::Route53::RecordSetGroup para configurar un conjunto de registros de recursos de alias denominado example.com que enruta el tráfico a un balanceador de carga de ELB, versión 1 (Classic) y a un balanceador de carga de la versión 2 (Application o Network). La propiedad AliasTarget especifica el ID de zona hospedada y el nombre DNS para myELB LoadBalancer mediante la función intrínseca GetAtt. GetAtt recupera diferentes propiedades del recurso myELB, dependiendo de si se enruta el tráfico a un balanceador de carga versión 1 o versión 2:

  • Balanceador de carga versión 1: CanonicalHostedZoneNameID y DNSName

  • Balanceador de carga de la versión 2: CanonicalHostedZoneID y DNSName

Para obtener más información sobre los conjuntos de registros de recursos de alias, consulte Elección entre registros de alias y sin alias en la Guía para desarrolladores de Route 53.

JSON para balanceador de carga, versión 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 balanceador de carga, versión 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 balanceador de carga, versión 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 balanceador de carga, versión 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 una distribución de CloudFront

El siguiente ejemplo crea un conjunto de registros de alias que enruta las consultas a la distribución de CloudFront especificada.

nota

Cuando se crean conjuntos de registros de recursos de alias, debe especificar Z2FDTNDATAQYW2 para la propiedad HostedZoneId, tal y como se muestra en el siguiente ejemplo. Los conjuntos de registros de recursos de alias para CloudFront no se pueden crear en una 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