A Pulumi provider SDK for creating and managing Amazon Web Services (AWS) cloud resources in Go, providing strongly-typed resource classes and data sources for all major AWS services.
The route53 package provides resources for managing DNS hosted zones, records, health checks, resolver rules, traffic policies, and related Route 53 features.
import "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/route53"// Resources
NewCidrCollection(ctx, name, args, opts) (*CidrCollection, error)
NewCidrLocation(ctx, name, args, opts) (*CidrLocation, error)
NewDelegationSet(ctx, name, args, opts) (*DelegationSet, error)
NewHealthCheck(ctx, name, args, opts) (*HealthCheck, error)
NewHostedZoneDnsSec(ctx, name, args, opts) (*HostedZoneDnsSec, error)
NewKeySigningKey(ctx, name, args, opts) (*KeySigningKey, error)
NewProfilesAssociation(ctx, name, args, opts) (*ProfilesAssociation, error)
NewProfilesProfile(ctx, name, args, opts) (*ProfilesProfile, error)
NewProfilesResourceAssociation(ctx, name, args, opts) (*ProfilesResourceAssociation, error)
NewQueryLog(ctx, name, args, opts) (*QueryLog, error)
NewRecord(ctx, name, args, opts) (*Record, error)
NewRecordsExclusive(ctx, name, args, opts) (*RecordsExclusive, error)
NewResolverConfig(ctx, name, args, opts) (*ResolverConfig, error)
NewResolverDnsSecConfig(ctx, name, args, opts) (*ResolverDnsSecConfig, error)
NewResolverEndpoint(ctx, name, args, opts) (*ResolverEndpoint, error)
NewResolverFirewallConfig(ctx, name, args, opts) (*ResolverFirewallConfig, error)
NewResolverFirewallDomainList(ctx, name, args, opts) (*ResolverFirewallDomainList, error)
NewResolverFirewallRule(ctx, name, args, opts) (*ResolverFirewallRule, error)
NewResolverFirewallRuleGroup(ctx, name, args, opts) (*ResolverFirewallRuleGroup, error)
NewResolverFirewallRuleGroupAssociation(ctx, name, args, opts) (*ResolverFirewallRuleGroupAssociation, error)
NewResolverQueryLogConfig(ctx, name, args, opts) (*ResolverQueryLogConfig, error)
NewResolverQueryLogConfigAssociation(ctx, name, args, opts) (*ResolverQueryLogConfigAssociation, error)
NewResolverRule(ctx, name, args, opts) (*ResolverRule, error)
NewResolverRuleAssociation(ctx, name, args, opts) (*ResolverRuleAssociation, error)
NewTrafficPolicy(ctx, name, args, opts) (*TrafficPolicy, error)
NewTrafficPolicyInstance(ctx, name, args, opts) (*TrafficPolicyInstance, error)
NewVpcAssociationAuthorization(ctx, name, args, opts) (*VpcAssociationAuthorization, error)
NewZone(ctx, name, args, opts) (*Zone, error)
NewZoneAssociation(ctx, name, args, opts) (*ZoneAssociation, error)
// Data Sources (lookup functions)
GetCidrCollection(ctx, name, id, state, opts) (*CidrCollection, error)
GetCidrLocation(ctx, name, id, state, opts) (*CidrLocation, error)
GetDelegationSet(ctx, name, id, state, opts) (*DelegationSet, error)
GetHealthCheck(ctx, name, id, state, opts) (*HealthCheck, error)
GetHostedZoneDnsSec(ctx, name, id, state, opts) (*HostedZoneDnsSec, error)
GetKeySigningKey(ctx, name, id, state, opts) (*KeySigningKey, error)
GetQueryLog(ctx, name, id, state, opts) (*QueryLog, error)
GetRecord(ctx, name, id, state, opts) (*Record, error)
GetResolverConfig(ctx, name, id, state, opts) (*ResolverConfig, error)
GetResolverDnsSecConfig(ctx, name, id, state, opts) (*ResolverDnsSecConfig, error)
GetResolverEndpoint(ctx, name, id, state, opts) (*ResolverEndpoint, error)
GetResolverFirewallConfig(ctx, name, id, state, opts) (*ResolverFirewallConfig, error)
GetResolverFirewallDomainList(ctx, name, id, state, opts) (*ResolverFirewallDomainList, error)
GetResolverFirewallRule(ctx, name, id, state, opts) (*ResolverFirewallRule, error)
GetResolverFirewallRuleGroup(ctx, name, id, state, opts) (*ResolverFirewallRuleGroup, error)
GetResolverFirewallRuleGroupAssociation(ctx, name, id, state, opts) (*ResolverFirewallRuleGroupAssociation, error)
GetResolverQueryLogConfig(ctx, name, id, state, opts) (*ResolverQueryLogConfig, error)
GetResolverQueryLogConfigAssociation(ctx, name, id, state, opts) (*ResolverQueryLogConfigAssociation, error)
GetResolverRule(ctx, name, id, state, opts) (*ResolverRule, error)
GetResolverRuleAssociation(ctx, name, id, state, opts) (*ResolverRuleAssociation, error)
GetTrafficPolicy(ctx, name, id, state, opts) (*TrafficPolicy, error)
GetTrafficPolicyInstance(ctx, name, id, state, opts) (*TrafficPolicyInstance, error)
GetVpcAssociationAuthorization(ctx, name, id, state, opts) (*VpcAssociationAuthorization, error)
GetZone(ctx, name, id, state, opts) (*Zone, error)
GetZoneAssociation(ctx, name, id, state, opts) (*ZoneAssociation, error)
GetZones(ctx, args, opts) (*GetZonesResult, error)
GetZonesOutput(ctx, args, opts) GetZonesResultOutput
// Invoke functions (data source lookups)
LookupZone(ctx, args, opts) (*LookupZoneResult, error)
GetRecords(ctx, args, opts) (*GetRecordsResult, error)
GetRecordsOutput(ctx, args, opts) GetRecordsResultOutput
GetTrafficPolicyDocument(ctx, args, opts) (*GetTrafficPolicyDocumentResult, error)
GetTrafficPolicyDocumentOutput(ctx, args, opts) GetTrafficPolicyDocumentResultOutput
GetProfilesProfiles(ctx, args, opts) (*GetProfilesProfilesResult, error)
GetProfilesProfilesOutput(ctx, args, opts) GetProfilesProfilesResultOutput
GetResolverFirewallRules(ctx, args, opts) (*GetResolverFirewallRulesResult, error)
GetResolverFirewallRulesOutput(ctx, args, opts) GetResolverFirewallRulesResultOutput
GetResolverRules(ctx, args, opts) (*GetResolverRulesResult, error)
GetResolverRulesOutput(ctx, args, opts) GetResolverRulesResultOutputZoneManages a Route 53 hosted zone. For DNSSEC management, use route53.KeySigningKey and route53.HostedZoneDnsSec alongside this resource.
func NewZone(
ctx *pulumi.Context,
name string,
args *route53.ZoneArgs,
opts ...pulumi.ResourceOption,
) (*route53.Zone, error)ZoneArgs Fieldstype ZoneArgs struct {
// This is the name of the hosted zone (e.g., "example.com"). Required.
Name pulumi.StringInput
// A comment for the hosted zone. Defaults to "Managed by Pulumi".
Comment pulumi.StringPtrInput
// ID of a reusable delegation set whose NS records to assign to this zone.
// Conflicts with Vpcs (delegation sets work only for public zones).
DelegationSetId pulumi.StringPtrInput
// Enable accelerated recovery for the hosted zone. Default: false.
EnableAcceleratedRecovery pulumi.BoolPtrInput
// Destroy all records when destroying the zone (including those managed externally). Default: false.
ForceDestroy pulumi.BoolPtrInput
// Resource tags.
Tags pulumi.StringMapInput
// VPC association blocks for a private hosted zone. At least one VPC is required for private zones.
// Conflicts with DelegationSetId.
Vpcs ZoneVpcArrayInput
}Zone Output Attributes| Field | Type | Description |
|---|---|---|
Arn | pulumi.StringOutput | ARN of the hosted zone |
Comment | pulumi.StringOutput | Hosted zone comment |
DelegationSetId | pulumi.StringPtrOutput | Reusable delegation set ID |
Name | pulumi.StringOutput | Zone name |
NameServers | pulumi.StringArrayOutput | List of authoritative name servers |
PrimaryNameServer | pulumi.StringOutput | Primary name server (created the SOA record) |
ZoneId | pulumi.StringOutput | Route 53 hosted zone ID for use in records |
Vpcs | ZoneVpcArrayOutput | Associated VPCs (private zones only) |
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/route53"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
zone, err := route53.NewZone(ctx, "primary", &route53.ZoneArgs{
Name: pulumi.String("example.com"),
})
if err != nil {
return err
}
ctx.Export("zoneId", zone.ZoneId)
return nil
})
}primary, _ := ec2.NewVpc(ctx, "primary", &ec2.VpcArgs{
CidrBlock: pulumi.String("10.6.0.0/16"),
EnableDnsHostnames: pulumi.Bool(true),
EnableDnsSupport: pulumi.Bool(true),
})
_, err := route53.NewZone(ctx, "private", &route53.ZoneArgs{
Name: pulumi.String("example.com"),
Vpcs: route53.ZoneVpcArray{
&route53.ZoneVpcArgs{
VpcId: primary.ID(),
},
},
})main, _ := route53.NewZone(ctx, "main", &route53.ZoneArgs{
Name: pulumi.String("example.com"),
})
dev, _ := route53.NewZone(ctx, "dev", &route53.ZoneArgs{
Name: pulumi.String("dev.example.com"),
Tags: pulumi.StringMap{"Environment": pulumi.String("dev")},
})
// Delegate the subdomain by creating an NS record in the parent zone
_, err := route53.NewRecord(ctx, "dev-ns", &route53.RecordArgs{
ZoneId: main.ZoneId,
Name: pulumi.String("dev.example.com"),
Type: pulumi.String(route53.RecordTypeNS),
Ttl: pulumi.Int(30),
Records: dev.NameServers,
})RecordManages a Route 53 DNS record.
func NewRecord(
ctx *pulumi.Context,
name string,
args *route53.RecordArgs,
opts ...pulumi.ResourceOption,
) (*route53.Record, error)RecordArgs Fieldstype RecordArgs struct {
// Hosted zone ID to contain this record. Required.
ZoneId pulumi.StringInput
// Record name (e.g., "www" or "www.example.com"). Required.
Name pulumi.StringInput
// Record type. Required.
// Valid values: "A", "AAAA", "CAA", "CNAME", "DS", "HTTPS", "MX", "NAPTR",
// "NS", "PTR", "SOA", "SPF", "SRV", "SSHFP", "SVCB", "TLSA", "TXT".
Type pulumi.StringInput
// TTL in seconds. Conflicts with Aliases.
Ttl pulumi.IntPtrInput
// Record values. Conflicts with Aliases. Exactly one of Records or Aliases must be set.
Records pulumi.StringArrayInput
// Alias record block. Conflicts with Ttl and Records.
Aliases RecordAliasArrayInput
// Allow overwriting an existing record. Default: false.
AllowOverwrite pulumi.BoolPtrInput
// Health check to associate with this record.
HealthCheckId pulumi.StringPtrInput
// Unique set identifier. Required when using routing policies.
SetIdentifier pulumi.StringPtrInput
// Weighted routing policy block. Conflicts with other routing policies.
WeightedRoutingPolicies RecordWeightedRoutingPolicyArrayInput
// Latency-based routing policy block.
LatencyRoutingPolicies RecordLatencyRoutingPolicyArrayInput
// Geolocation routing policy block.
GeolocationRoutingPolicies RecordGeolocationRoutingPolicyArrayInput
// Geoproximity routing policy block.
GeoproximityRoutingPolicy RecordGeoproximityRoutingPolicyPtrInput
// Failover routing policy block.
FailoverRoutingPolicies RecordFailoverRoutingPolicyArrayInput
// CIDR-based routing policy block.
CidrRoutingPolicy RecordCidrRoutingPolicyPtrInput
// Multivalue answer routing policy. Conflicts with other routing policies.
MultivalueAnswerRoutingPolicy pulumi.BoolPtrInput
}Record Output Attributes| Field | Type | Description |
|---|---|---|
Fqdn | pulumi.StringOutput | Fully-qualified domain name built from zone domain and record name |
Name | pulumi.StringOutput | Record name |
Type | pulumi.StringOutput | Record type |
ZoneId | pulumi.StringOutput | Containing hosted zone ID |
A, AAAA, CAA, CNAME, DS, HTTPS, MX, NAPTR, NS, PTR, SOA, SPF, SRV, SSHFP, SVCB, TLSA, TXT
Constants are available as route53.RecordTypeA, route53.RecordTypeAAAA, route53.RecordTypeCNAME, route53.RecordTypeNS, etc.
_, err := route53.NewRecord(ctx, "www", &route53.RecordArgs{
ZoneId: pulumi.Any(primary.ZoneId),
Name: pulumi.String("www.example.com"),
Type: pulumi.String(route53.RecordTypeA),
Ttl: pulumi.Int(300),
Records: pulumi.StringArray{pulumi.String("93.184.216.34")},
})// TTL is always 60s for alias records; omit the Ttl field.
_, err := route53.NewRecord(ctx, "alias", &route53.RecordArgs{
ZoneId: pulumi.Any(primary.ZoneId),
Name: pulumi.String("example.com"),
Type: pulumi.String(route53.RecordTypeA),
Aliases: route53.RecordAliasArray{
&route53.RecordAliasArgs{
Name: alb.DnsName,
ZoneId: alb.ZoneId,
EvaluateTargetHealth: pulumi.Bool(true),
},
},
})_, err := route53.NewRecord(ctx, "www-dev", &route53.RecordArgs{
ZoneId: pulumi.Any(primary.ZoneId),
Name: pulumi.String("www"),
Type: pulumi.String(route53.RecordTypeCNAME),
Ttl: pulumi.Int(5),
WeightedRoutingPolicies: route53.RecordWeightedRoutingPolicyArray{
&route53.RecordWeightedRoutingPolicyArgs{Weight: pulumi.Int(10)},
},
SetIdentifier: pulumi.String("dev"),
Records: pulumi.StringArray{pulumi.String("dev.example.com")},
})HealthCheckProvides a Route 53 health check resource.
func NewHealthCheck(
ctx *pulumi.Context,
name string,
args *route53.HealthCheckArgs,
opts ...pulumi.ResourceOption,
) (*route53.HealthCheck, error)HealthCheckArgs Fields| Field | Type | Description |
|---|---|---|
Type | pulumi.StringInput | Required. Protocol type: HTTP, HTTPS, HTTP_STR_MATCH, HTTPS_STR_MATCH, TCP, CALCULATED, CLOUDWATCH_METRIC, RECOVERY_CONTROL |
Fqdn | pulumi.StringPtrInput | FQDN of the endpoint. Sent as Host header when IpAddress is set |
IpAddress | pulumi.StringPtrInput | IP address of the endpoint |
Port | pulumi.IntPtrInput | Port to connect to |
ResourcePath | pulumi.StringPtrInput | Path for HTTP/HTTPS checks |
SearchString | pulumi.StringPtrInput | String to search in first 5120 bytes. HTTP_STR_MATCH / HTTPS_STR_MATCH only |
RequestInterval | pulumi.IntPtrInput | Seconds between checks |
FailureThreshold | pulumi.IntInput | Consecutive failures to mark unhealthy |
EnableSni | pulumi.BoolPtrInput | Send SNI in TLS handshake. Default: true for HTTPS, false otherwise |
MeasureLatency | pulumi.BoolPtrInput | Enable CloudWatch latency graphs |
Regions | pulumi.StringArrayInput | AWS regions from which to run the check |
ChildHealthchecks | pulumi.StringArrayInput | Child health check IDs. CALCULATED type only |
ChildHealthThreshold | pulumi.IntPtrInput | Minimum healthy children (0–256). CALCULATED type only |
CloudwatchAlarmName | pulumi.StringPtrInput | CloudWatch alarm name. CLOUDWATCH_METRIC type only |
CloudwatchAlarmRegion | pulumi.StringPtrInput | Region of the CloudWatch alarm |
InsufficientDataHealthStatus | pulumi.StringPtrInput | Status when CloudWatch has insufficient data: Healthy, Unhealthy, LastKnownStatus |
InvertHealthcheck | pulumi.BoolPtrInput | Invert the health check result |
Disabled | pulumi.BoolPtrInput | Stop Route 53 from performing health checks |
RoutingControlArn | pulumi.StringPtrInput | ARC routing control ARN. RECOVERY_CONTROL type only |
ReferenceName | pulumi.StringPtrInput | Reference name for identification |
Triggers | pulumi.StringMapInput | Map of values that trigger in-place updates when changed |
Tags | pulumi.StringMapInput | Resource tags |
HealthCheck Output Attributes| Field | Type | Description |
|---|---|---|
Arn | pulumi.StringOutput | ARN of the health check |
Type | pulumi.StringOutput | Protocol type |
Fqdn | pulumi.StringPtrOutput | Endpoint FQDN |
IpAddress | pulumi.StringPtrOutput | Endpoint IP address |
_, err := route53.NewHealthCheck(ctx, "example", &route53.HealthCheckArgs{
Fqdn: pulumi.String("example.com"),
Port: pulumi.Int(80),
Type: pulumi.String("HTTP"),
ResourcePath: pulumi.String("/health"),
FailureThreshold: pulumi.Int(5),
RequestInterval: pulumi.Int(30),
Tags: pulumi.StringMap{
"Name": pulumi.String("example-health-check"),
},
})alarm, _ := cloudwatch.NewMetricAlarm(ctx, "alarm", &cloudwatch.MetricAlarmArgs{
Name: pulumi.String("cpu-alarm"),
ComparisonOperator: pulumi.String("GreaterThanOrEqualToThreshold"),
EvaluationPeriods: pulumi.Int(2),
MetricName: pulumi.String("CPUUtilization"),
Namespace: pulumi.String("AWS/EC2"),
Period: pulumi.Int(120),
Statistic: pulumi.String("Average"),
Threshold: pulumi.Float64(80),
})
_, err := route53.NewHealthCheck(ctx, "cw-check", &route53.HealthCheckArgs{
Type: pulumi.String("CLOUDWATCH_METRIC"),
CloudwatchAlarmName: alarm.Name,
CloudwatchAlarmRegion: pulumi.String("us-west-2"),
InsufficientDataHealthStatus: pulumi.String("Healthy"),
})LookupZone — Zone Data SourceLook up an existing hosted zone by name or ID.
func LookupZone(
ctx *pulumi.Context,
args *route53.LookupZoneArgs,
opts ...pulumi.InvokeOption,
) (*route53.LookupZoneResult, error)LookupZoneArgs Fieldstype LookupZoneArgs struct {
// Hosted zone name to look up (e.g., "example.com").
Name *string `pulumi:"name"`
// Zone ID to look up. Mutually exclusive with Name.
ZoneId *string `pulumi:"zoneId"`
// When true, restrict lookup to private hosted zones.
PrivateZone *bool `pulumi:"privateZone"`
// Filter to private zones associated with this VPC ID.
VpcId *string `pulumi:"vpcId"`
// Tags that must exactly match the hosted zone.
Tags map[string]string `pulumi:"tags"`
// Enable accelerated recovery filter.
EnableAcceleratedRecovery *bool `pulumi:"enableAcceleratedRecovery"`
}LookupZoneResult Fieldstype LookupZoneResult struct {
// ARN of the hosted zone.
Arn string `pulumi:"arn"`
// Caller reference value.
CallerReference string `pulumi:"callerReference"`
// Comment on the hosted zone.
Comment string `pulumi:"comment"`
// Provider-assigned unique resource ID.
Id string `pulumi:"id"`
// The hosted zone name.
Name string `pulumi:"name"`
// List of authoritative name servers.
NameServers []string `pulumi:"nameServers"`
// Primary name server.
PrimaryNameServer string `pulumi:"primaryNameServer"`
// Whether this is a private hosted zone.
PrivateZone *bool `pulumi:"privateZone"`
// Number of record sets in the zone.
ResourceRecordSetCount int `pulumi:"resourceRecordSetCount"`
// Tags assigned to the zone.
Tags map[string]string `pulumi:"tags"`
// Associated VPC ID (private zones).
VpcId *string `pulumi:"vpcId"`
// Hosted zone identifier.
ZoneId string `pulumi:"zoneId"`
// Service that created this hosted zone (e.g., servicediscovery.amazonaws.com).
LinkedServicePrincipal string `pulumi:"linkedServicePrincipal"`
// Description provided by the linked service.
LinkedServiceDescription string `pulumi:"linkedServiceDescription"`
// Whether accelerated recovery is enabled.
EnableAcceleratedRecovery *bool `pulumi:"enableAcceleratedRecovery"`
}zone, err := route53.LookupZone(ctx, &route53.LookupZoneArgs{
Name: pulumi.StringRef("example.com"),
PrivateZone: pulumi.BoolRef(false),
})
if err != nil {
return err
}
// Use zone.ZoneId when creating records
_, err = route53.NewRecord(ctx, "api", &route53.RecordArgs{
ZoneId: pulumi.String(zone.ZoneId),
Name: pulumi.String("api.example.com"),
Type: pulumi.String(route53.RecordTypeA),
Ttl: pulumi.Int(300),
Records: pulumi.StringArray{pulumi.String("1.2.3.4")},
})Hosted zones are imported using the zone ID:
pulumi import aws:route53/zone:Zone myzone Z1D633PJN98FT9Records are imported using {zone_id}_{name}_{type}:
pulumi import aws_route53_record.example Z4KAPRWWNC7JR_dev_NSWith a set identifier:
pulumi import aws_route53_record.example Z4KAPRWWNC7JR_dev_NS_devHealth checks are imported using the health check ID:
pulumi import aws:route53/healthCheck:HealthCheck http_check abcdef11-2222-3333-4444-555555fedcbaInstall with Tessl CLI
npx tessl i tessl/golang-github-com-pulumi-pulumi-aws-sdk-v7@7.16.1docs