Fragmentos de plantilla de Route 53
Temas
- Conjunto de registros de recursos de Amazon Route 53 con el ID o nombre de zona hospedada
- Uso de RecordSetGroup para la configuración de conjuntos de registros de recursos ponderados
- Uso de RecordSetGroup para configurar un conjunto de registros de recursos de alias
- Conjunto de registros de recursos de alias para una distribución de CloudFront
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 propiedadHostedZoneName
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
yDNSName
Balanceador de carga de la versión 2:
CanonicalHostedZoneID
yDNSName
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