Skip to content

HostedZone ​

The HostedZone resource lets you manage AWS Route53 HostedZones for DNS management. Hosted zones allow you to route traffic for your domain and manage DNS records.

Minimal Example ​

Create a basic hosted zone with a name and the ability to add tags.

ts
import AWS from "alchemy/aws/control";

const hostedZone = await AWS.Route53.HostedZone("myHostedZone", {
  name: "mydomain.com",
  HostedZoneTags: [
    { Key: "Environment", Value: "Production" },
    { Key: "Project", Value: "Website" }
  ]
});

Advanced Configuration ​

Configure a hosted zone with VPC associations and custom settings.

ts
import AWS from "alchemy/aws/control";

const hostedZoneWithVPC = await AWS.Route53.HostedZone("myVPCHostedZone", {
  name: "myvpcdomain.com",
  VPCs: [
    {
      VPCId: "vpc-0abcd1234efgh5678",
      VPCRegion: "us-west-2"
    }
  ],
  HostedZoneConfig: {
    Comment: "Hosted zone for my VPC domain"
  }
});

Query Logging Configuration ​

Set up a hosted zone with query logging enabled for monitoring DNS queries.

ts
import AWS from "alchemy/aws/control";

const hostedZoneWithLogging = await AWS.Route53.HostedZone("myLoggingHostedZone", {
  name: "myloggingdomain.com",
  QueryLoggingConfig: {
    CloudWatchLogsLogGroupArn: "arn:aws:logs:us-west-2:123456789012:log-group:Route53Logs",
    CloudWatchLogsRoleArn: "arn:aws:iam::123456789012:role/Route53LoggingRole"
  }
});

Adoption of Existing Hosted Zone ​

Adopt an existing hosted zone instead of failing if the resource already exists.

ts
import AWS from "alchemy/aws/control";

const adoptedHostedZone = await AWS.Route53.HostedZone("existingHostedZone", {
  name: "existingdomain.com",
  adopt: true // This will adopt the hosted zone if it already exists
});