Miss any of our Open RFC calls?Watch the recordings here! »


1.70.0 • Public • Published

Amazon Route53 Construct Library

cfn-resources: Stable

cdk-constructs: Stable

To add a public hosted zone:

import * as route53 from '@aws-cdk/aws-route53';
new route53.PublicHostedZone(this, 'HostedZone', {
  zoneName: 'fully.qualified.domain.com'

To add a private hosted zone, use PrivateHostedZone. Note that enableDnsHostnames and enableDnsSupport must have been enabled for the VPC you're configuring for private hosted zones.

import * as ec2 from '@aws-cdk/aws-ec2';
import * as route53 from '@aws-cdk/aws-route53';
const vpc = new ec2.Vpc(this, 'VPC');
const zone = new route53.PrivateHostedZone(this, 'HostedZone', {
  zoneName: 'fully.qualified.domain.com',
  vpc    // At least one VPC has to be added to a Private Hosted Zone.

Additional VPCs can be added with zone.addVpc().

Adding Records

To add a TXT record to your zone:

import * as route53 from '@aws-cdk/aws-route53';
new route53.TxtRecord(this, 'TXTRecord', {
  zone: myZone,
  recordName: '_foo',  // If the name ends with a ".", it will be used as-is;
                       // if it ends with a "." followed by the zone name, a trailing "." will be added automatically;
                       // otherwise, a ".", the zone name, and a trailing "." will be added automatically.
                       // Defaults to zone root if not specified.
  values: [            // Will be quoted for you, and " will be escaped automatically.
  ttl: Duration.minutes(90),       // Optional - default is 30 minutes

To add a A record to your zone:

import * as route53 from '@aws-cdk/aws-route53';
new route53.ARecord(this, 'ARecord', {
  zone: myZone,
  target: route53.RecordTarget.fromIpAddresses('', '')

To add a AAAA record pointing to a CloudFront distribution:

import * as route53 from '@aws-cdk/aws-route53';
import * as targets from '@aws-cdk/aws-route53-targets';
new route53.AaaaRecord(this, 'Alias', {
  zone: myZone,
  target: route53.RecordTarget.fromAlias(new targets.CloudFrontTarget(distribution))

Constructs are available for A, AAAA, CAA, CNAME, MX, NS, SRV and TXT records.

Use the CaaAmazonRecord construct to easily restrict certificate authorities allowed to issue certificates for a domain to Amazon only.


If you don't know the ID of the Hosted Zone to import, you can use the HostedZone.fromLookup:

HostedZone.fromLookup(this, 'MyZone', {
  domainName: 'example.com'

HostedZone.fromLookup requires an environment to be configured. Check out the documentation for more documentation and examples. CDK automatically looks into your ~/.aws/config file for the [default] profile. If you want to specify a different account run cdk deploy --profile [profile].

new MyDevStack(app, 'dev', { 
  env: { 
    account: process.env.CDK_DEFAULT_ACCOUNT, 
    region: process.env.CDK_DEFAULT_REGION 

If you know the ID and Name of a Hosted Zone, you can import it directly:

const zone = HostedZone.fromHostedZoneAttributes(this, 'MyZone', {
  zoneName: 'example.com',
  hostedZoneId: 'ZOJJZC49E0EPZ',

Alternatively, use the HostedZone.fromHostedZoneId to import hosted zones if you know the ID and the retrieval for the zoneName is undesirable.

const zone = HostedZone.fromHostedZoneId(this, 'MyZone', {
  hostedZoneId: 'ZOJJZC49E0EPZ',


npm i @aws-cdk/aws-route53

DownloadsWeekly Downloads






Unpacked Size

542 kB

Total Files


Last publish


  • avatar
  • avatar
  • avatar
  • avatar
  • avatar