A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources with infrastructure-as-code.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Amazon Route 53 is a scalable DNS web service for domain registration and routing.
Create a hosted zone and add a simple A record
const zone = new aws.route53.Zone("example", { name: "example.com" });
new aws.route53.Record("www", {
zoneId: zone.zoneId,
name: "www.example.com",
type: "A",
ttl: 300,
records: ["192.0.2.1"],
});Create an alias record pointing to a load balancer
new aws.route53.Record("lb-alias", {
zoneId: zone.zoneId,
name: "app.example.com",
type: "A",
aliases: [{
name: lb.dnsName,
zoneId: lb.zoneId,
evaluateTargetHealth: true,
}],
});Set up a private hosted zone for VPC
const privateZone = new aws.route53.Zone("private", {
name: "internal.example.com",
vpcId: vpc.id,
vpcRegion: "us-west-2",
});DNS hosted zones.
class Zone extends pulumi.CustomResource {
constructor(name: string, args?: ZoneArgs, opts?: pulumi.CustomResourceOptions);
readonly zoneId: pulumi.Output<string>;
readonly nameServers: pulumi.Output<string[]>;
}
interface ZoneArgs {
name?: pulumi.Input<string>;
comment?: pulumi.Input<string>;
vpcId?: pulumi.Input<string>;
vpcRegion?: pulumi.Input<string>;
tags?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}Example: Create a public hosted zone
const zone = new aws.route53.Zone("example", {
name: "example.com",
comment: "Main domain zone",
});DNS records.
class Record extends pulumi.CustomResource {
constructor(name: string, args: RecordArgs, opts?: pulumi.CustomResourceOptions);
}
interface RecordArgs {
zoneId: pulumi.Input<string>;
name: pulumi.Input<string>;
type: pulumi.Input<"A" | "AAAA" | "CNAME" | "MX" | "TXT" | "NS" | "SOA">;
ttl?: pulumi.Input<number>;
records?: pulumi.Input<pulumi.Input<string>[]>;
aliases?: pulumi.Input<pulumi.Input<RecordAlias>[]>;
}
interface RecordAlias {
name: pulumi.Input<string>;
zoneId: pulumi.Input<string>;
evaluateTargetHealth: pulumi.Input<boolean>;
}Example: Create DNS records
// Standard A record
new aws.route53.Record("www", {
zoneId: zone.zoneId,
name: "www.example.com",
type: "A",
ttl: 300,
records: ["192.0.2.1"],
});
// Alias record to CloudFront
new aws.route53.Record("cdn", {
zoneId: zone.zoneId,
name: "cdn.example.com",
type: "A",
aliases: [{
name: distribution.domainName,
zoneId: distribution.hostedZoneId,
evaluateTargetHealth: false,
}],
});const zone = new aws.route53.Zone("example", {
name: "example.com",
});
new aws.route53.Record("www", {
zoneId: zone.zoneId,
name: "www.example.com",
type: "A",
ttl: 300,
records: ["192.0.2.1"],
});
export const nameServers = zone.nameServers;Install with Tessl CLI
npx tessl i tessl/npm-pulumi--aws@7.16.0