Amazon Route53 Construct Library

--- ![Stability: Stable](https://img.shields.io/badge/stability-Stable-success.svg?style=for-the-badge) ---

To add a public hosted zone:

# Example may have issues. See https://github.com/aws/jsii/issues/826
import aws_cdk.aws_route53 as route53

route53.PublicHostedZone(self, "HostedZone",
    zone_name="fully.qualified.domain.com"
)

(Need help translating TypeScript to Python?)

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.

# Example may have issues. See https://github.com/aws/jsii/issues/826
import aws_cdk.aws_ec2 as ec2
import aws_cdk.aws_route53 as route53

vpc = ec2.Vpc(self, "VPC")

zone = route53.PrivateHostedZone(self, "HostedZone",
    zone_name="fully.qualified.domain.com",
    vpc=vpc
)

(Need help translating TypeScript to Python?)

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

Adding Records

To add a TXT record to your zone:

# Example may have issues. See https://github.com/aws/jsii/issues/826
import aws_cdk.aws_route53 as route53

route53.TxtRecord(self, "TXTRecord",
    zone=my_zone,
    record_name="_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=["Bar!", "Baz?"],
    ttl=Duration.minutes(90)
)

(Need help translating TypeScript to Python?)

To add a A record to your zone:

# Example may have issues. See https://github.com/aws/jsii/issues/826
import aws_cdk.aws_route53 as route53

route53.ARecord(self, "ARecord",
    zone=my_zone,
    target=route53.AddressRecordTarget.from_ip_addresses("1.2.3.4", "5.6.7.8")
)

(Need help translating TypeScript to Python?)

To add a AAAA record pointing to a CloudFront distribution:

# Example may have issues. See https://github.com/aws/jsii/issues/826
import aws_cdk.aws_route53 as route53
import aws_cdk.aws_route53_targets as targets

route53.AaaaRecord(self, "Alias",
    zone=my_zone,
    target=route53.AddressRecordTarget.from_alias(targets.CloudFrontTarget(distribution))
)

(Need help translating TypeScript to Python?)

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.

Adding records to existing hosted zones

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

# Example may have issues. See https://github.com/aws/jsii/issues/826
zone = HostedZone.import(self, "MyZone",
    zone_name="example.com",
    hosted_zone_id="ZOJJZC49E0EPZ"
)

(Need help translating TypeScript to Python?)

If you don’t know the ID of a Hosted Zone, you can use the HostedZone.fromLookup to discover and import it:

# Example may have issues. See https://github.com/aws/jsii/issues/826
HostedZone.from_lookup(self, "MyZone",
    domain_name="example.com"
)

(Need help translating TypeScript to Python?)